1 /* 2 * Definitions for the 'struct sk_buff' memory handlers. 3 * 4 * Authors: 5 * Alan Cox, <[email protected]> 6 * Florian La Roche, <[email protected]> 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License 10 * as published by the Free Software Foundation; either version 11 * 2 of the License, or (at your option) any later version. 12 */ 13 14 #ifndef _LINUX_SKBUFF_H 15 #define _LINUX_SKBUFF_H 16 17 #include <linux/config.h> 18 #include <linux/kernel.h> 19 #include <linux/compiler.h> 20 #include <linux/time.h> 21 #include <linux/cache.h> 22 23 #include <asm/atomic.h> 24 #include <asm/types.h> 25 #include <linux/spinlock.h> 26 #include <linux/mm.h> 27 #include <linux/highmem.h> 28 #include <linux/poll.h> 29 #include <linux/net.h> 30 #include <linux/textsearch.h> 31 #include <net/checksum.h> 32 33 #define HAVE_ALLOC_SKB /* For the drivers to know */ 34 #define HAVE_ALIGNABLE_SKB /* Ditto 8) */ 35 #define SLAB_SKB /* Slabified skbuffs */ 36 37 #define CHECKSUM_NONE 0 38 #define CHECKSUM_HW 1 39 #define CHECKSUM_UNNECESSARY 2 40 41 #define SKB_DATA_ALIGN(X) (((X) + (SMP_CACHE_BYTES - 1)) & \ 42 ~(SMP_CACHE_BYTES - 1)) 43 #define SKB_MAX_ORDER(X, ORDER) (((PAGE_SIZE << (ORDER)) - (X) - \ 44 sizeof(struct skb_shared_info)) & \ 45 ~(SMP_CACHE_BYTES - 1)) 46 #define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0)) 47 #define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2)) 48 49 /* A. Checksumming of received packets by device. 50 * 51 * NONE: device failed to checksum this packet. 52 * skb->csum is undefined. 53 * 54 * UNNECESSARY: device parsed packet and wouldbe verified checksum. 55 * skb->csum is undefined. 56 * It is bad option, but, unfortunately, many of vendors do this. 57 * Apparently with secret goal to sell you new device, when you 58 * will add new protocol to your host. F.e. IPv6. 8) 59 * 60 * HW: the most generic way. Device supplied checksum of _all_ 61 * the packet as seen by netif_rx in skb->csum. 62 * NOTE: Even if device supports only some protocols, but 63 * is able to produce some skb->csum, it MUST use HW, 64 * not UNNECESSARY. 65 * 66 * B. Checksumming on output. 67 * 68 * NONE: skb is checksummed by protocol or csum is not required. 69 * 70 * HW: device is required to csum packet as seen by hard_start_xmit 71 * from skb->h.raw to the end and to record the checksum 72 * at skb->h.raw+skb->csum. 73 * 74 * Device must show its capabilities in dev->features, set 75 * at device setup time. 76 * NETIF_F_HW_CSUM - it is clever device, it is able to checksum 77 * everything. 78 * NETIF_F_NO_CSUM - loopback or reliable single hop media. 79 * NETIF_F_IP_CSUM - device is dumb. It is able to csum only 80 * TCP/UDP over IPv4. Sigh. Vendors like this 81 * way by an unknown reason. Though, see comment above 82 * about CHECKSUM_UNNECESSARY. 8) 83 * 84 * Any questions? No questions, good. --ANK 85 */ 86 87 struct net_device; 88 89 #ifdef CONFIG_NETFILTER 90 struct nf_conntrack { 91 atomic_t use; 92 void (*destroy)(struct nf_conntrack *); 93 }; 94 95 #ifdef CONFIG_BRIDGE_NETFILTER 96 struct nf_bridge_info { 97 atomic_t use; 98 struct net_device *physindev; 99 struct net_device *physoutdev; 100 #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) 101 struct net_device *netoutdev; 102 #endif 103 unsigned int mask; 104 unsigned long data[32 / sizeof(unsigned long)]; 105 }; 106 #endif 107 108 #endif 109 110 struct sk_buff_head { 111 /* These two members must be first. */ 112 struct sk_buff *next; 113 struct sk_buff *prev; 114 115 __u32 qlen; 116 spinlock_t lock; 117 }; 118 119 struct sk_buff; 120 121 /* To allow 64K frame to be packed as single skb without frag_list */ 122 #define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2) 123 124 typedef struct skb_frag_struct skb_frag_t; 125 126 struct skb_frag_struct { 127 struct page *page; 128 __u16 page_offset; 129 __u16 size; 130 }; 131 132 /* This data is invariant across clones and lives at 133 * the end of the header data, ie. at skb->end. 134 */ 135 struct skb_shared_info { 136 atomic_t dataref; 137 unsigned int nr_frags; 138 unsigned short tso_size; 139 unsigned short tso_segs; 140 struct sk_buff *frag_list; 141 skb_frag_t frags[MAX_SKB_FRAGS]; 142 }; 143 144 /* We divide dataref into two halves. The higher 16 bits hold references 145 * to the payload part of skb->data. The lower 16 bits hold references to 146 * the entire skb->data. It is up to the users of the skb to agree on 147 * where the payload starts. 148 * 149 * All users must obey the rule that the skb->data reference count must be 150 * greater than or equal to the payload reference count. 151 * 152 * Holding a reference to the payload part means that the user does not 153 * care about modifications to the header part of skb->data. 154 */ 155 #define SKB_DATAREF_SHIFT 16 156 #define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1) 157 158 /** 159 * struct sk_buff - socket buffer 160 * @next: Next buffer in list 161 * @prev: Previous buffer in list 162 * @list: List we are on 163 * @sk: Socket we are owned by 164 * @stamp: Time we arrived 165 * @dev: Device we arrived on/are leaving by 166 * @input_dev: Device we arrived on 167 * @real_dev: The real device we are using 168 * @h: Transport layer header 169 * @nh: Network layer header 170 * @mac: Link layer header 171 * @dst: destination entry 172 * @sp: the security path, used for xfrm 173 * @cb: Control buffer. Free for use by every layer. Put private vars here 174 * @len: Length of actual data 175 * @data_len: Data length 176 * @mac_len: Length of link layer header 177 * @csum: Checksum 178 * @local_df: allow local fragmentation 179 * @cloned: Head may be cloned (check refcnt to be sure) 180 * @nohdr: Payload reference only, must not modify header 181 * @pkt_type: Packet class 182 * @ip_summed: Driver fed us an IP checksum 183 * @priority: Packet queueing priority 184 * @users: User count - see {datagram,tcp}.c 185 * @protocol: Packet protocol from driver 186 * @security: Security level of packet 187 * @truesize: Buffer size 188 * @head: Head of buffer 189 * @data: Data head pointer 190 * @tail: Tail pointer 191 * @end: End pointer 192 * @destructor: Destruct function 193 * @nfmark: Can be used for communication between hooks 194 * @nfcache: Cache info 195 * @nfct: Associated connection, if any 196 * @nfctinfo: Relationship of this skb to the connection 197 * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c 198 * @private: Data which is private to the HIPPI implementation 199 * @tc_index: Traffic control index 200 * @tc_verd: traffic control verdict 201 * @tc_classid: traffic control classid 202 */ 203 204 struct sk_buff { 205 /* These two members must be first. */ 206 struct sk_buff *next; 207 struct sk_buff *prev; 208 209 struct sk_buff_head *list; 210 struct sock *sk; 211 struct timeval stamp; 212 struct net_device *dev; 213 struct net_device *input_dev; 214 struct net_device *real_dev; 215 216 union { 217 struct tcphdr *th; 218 struct udphdr *uh; 219 struct icmphdr *icmph; 220 struct igmphdr *igmph; 221 struct iphdr *ipiph; 222 struct ipv6hdr *ipv6h; 223 unsigned char *raw; 224 } h; 225 226 union { 227 struct iphdr *iph; 228 struct ipv6hdr *ipv6h; 229 struct arphdr *arph; 230 unsigned char *raw; 231 } nh; 232 233 union { 234 unsigned char *raw; 235 } mac; 236 237 struct dst_entry *dst; 238 struct sec_path *sp; 239 240 /* 241 * This is the control buffer. It is free to use for every 242 * layer. Please put your private variables there. If you 243 * want to keep them across layers you have to do a skb_clone() 244 * first. This is owned by whoever has the skb queued ATM. 245 */ 246 char cb[40]; 247 248 unsigned int len, 249 data_len, 250 mac_len, 251 csum; 252 unsigned char local_df, 253 cloned:1, 254 nohdr:1, 255 pkt_type, 256 ip_summed; 257 __u32 priority; 258 unsigned short protocol, 259 security; 260 261 void (*destructor)(struct sk_buff *skb); 262 #ifdef CONFIG_NETFILTER 263 unsigned long nfmark; 264 __u32 nfcache; 265 __u32 nfctinfo; 266 struct nf_conntrack *nfct; 267 #ifdef CONFIG_BRIDGE_NETFILTER 268 struct nf_bridge_info *nf_bridge; 269 #endif 270 #endif /* CONFIG_NETFILTER */ 271 #if defined(CONFIG_HIPPI) 272 union { 273 __u32 ifield; 274 } private; 275 #endif 276 #ifdef CONFIG_NET_SCHED 277 __u32 tc_index; /* traffic control index */ 278 #ifdef CONFIG_NET_CLS_ACT 279 __u32 tc_verd; /* traffic control verdict */ 280 __u32 tc_classid; /* traffic control classid */ 281 #endif 282 283 #endif 284 285 286 /* These elements must be at the end, see alloc_skb() for details. */ 287 unsigned int truesize; 288 atomic_t users; 289 unsigned char *head, 290 *data, 291 *tail, 292 *end; 293 }; 294 295 #ifdef __KERNEL__ 296 /* 297 * Handling routines are only of interest to the kernel 298 */ 299 #include <linux/slab.h> 300 301 #include <asm/system.h> 302 303 extern void __kfree_skb(struct sk_buff *skb); 304 extern struct sk_buff *alloc_skb(unsigned int size, int priority); 305 extern struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp, 306 unsigned int size, int priority); 307 extern void kfree_skbmem(struct sk_buff *skb); 308 extern struct sk_buff *skb_clone(struct sk_buff *skb, int priority); 309 extern struct sk_buff *skb_copy(const struct sk_buff *skb, int priority); 310 extern struct sk_buff *pskb_copy(struct sk_buff *skb, int gfp_mask); 311 extern int pskb_expand_head(struct sk_buff *skb, 312 int nhead, int ntail, int gfp_mask); 313 extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, 314 unsigned int headroom); 315 extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb, 316 int newheadroom, int newtailroom, 317 int priority); 318 extern struct sk_buff * skb_pad(struct sk_buff *skb, int pad); 319 #define dev_kfree_skb(a) kfree_skb(a) 320 extern void skb_over_panic(struct sk_buff *skb, int len, 321 void *here); 322 extern void skb_under_panic(struct sk_buff *skb, int len, 323 void *here); 324 325 struct skb_seq_state 326 { 327 __u32 lower_offset; 328 __u32 upper_offset; 329 __u32 frag_idx; 330 __u32 stepped_offset; 331 struct sk_buff *root_skb; 332 struct sk_buff *cur_skb; 333 __u8 *frag_data; 334 }; 335 336 extern void skb_prepare_seq_read(struct sk_buff *skb, 337 unsigned int from, unsigned int to, 338 struct skb_seq_state *st); 339 extern unsigned int skb_seq_read(unsigned int consumed, const u8 **data, 340 struct skb_seq_state *st); 341 extern void skb_abort_seq_read(struct skb_seq_state *st); 342 343 extern unsigned int skb_find_text(struct sk_buff *skb, unsigned int from, 344 unsigned int to, struct ts_config *config, 345 struct ts_state *state); 346 347 /* Internal */ 348 #define skb_shinfo(SKB) ((struct skb_shared_info *)((SKB)->end)) 349 350 /** 351 * skb_queue_empty - check if a queue is empty 352 * @list: queue head 353 * 354 * Returns true if the queue is empty, false otherwise. 355 */ 356 static inline int skb_queue_empty(const struct sk_buff_head *list) 357 { 358 return list->next == (struct sk_buff *)list; 359 } 360 361 /** 362 * skb_get - reference buffer 363 * @skb: buffer to reference 364 * 365 * Makes another reference to a socket buffer and returns a pointer 366 * to the buffer. 367 */ 368 static inline struct sk_buff *skb_get(struct sk_buff *skb) 369 { 370 atomic_inc(&skb->users); 371 return skb; 372 } 373 374 /* 375 * If users == 1, we are the only owner and are can avoid redundant 376 * atomic change. 377 */ 378 379 /** 380 * kfree_skb - free an sk_buff 381 * @skb: buffer to free 382 * 383 * Drop a reference to the buffer and free it if the usage count has 384 * hit zero. 385 */ 386 static inline void kfree_skb(struct sk_buff *skb) 387 { 388 if (likely(atomic_read(&skb->users) == 1)) 389 smp_rmb(); 390 else if (likely(!atomic_dec_and_test(&skb->users))) 391 return; 392 __kfree_skb(skb); 393 } 394 395 /** 396 * skb_cloned - is the buffer a clone 397 * @skb: buffer to check 398 * 399 * Returns true if the buffer was generated with skb_clone() and is 400 * one of multiple shared copies of the buffer. Cloned buffers are 401 * shared data so must not be written to under normal circumstances. 402 */ 403 static inline int skb_cloned(const struct sk_buff *skb) 404 { 405 return skb->cloned && 406 (atomic_read(&skb_shinfo(skb)->dataref) & SKB_DATAREF_MASK) != 1; 407 } 408 409 /** 410 * skb_header_cloned - is the header a clone 411 * @skb: buffer to check 412 * 413 * Returns true if modifying the header part of the buffer requires 414 * the data to be copied. 415 */ 416 static inline int skb_header_cloned(const struct sk_buff *skb) 417 { 418 int dataref; 419 420 if (!skb->cloned) 421 return 0; 422 423 dataref = atomic_read(&skb_shinfo(skb)->dataref); 424 dataref = (dataref & SKB_DATAREF_MASK) - (dataref >> SKB_DATAREF_SHIFT); 425 return dataref != 1; 426 } 427 428 /** 429 * skb_header_release - release reference to header 430 * @skb: buffer to operate on 431 * 432 * Drop a reference to the header part of the buffer. This is done 433 * by acquiring a payload reference. You must not read from the header 434 * part of skb->data after this. 435 */ 436 static inline void skb_header_release(struct sk_buff *skb) 437 { 438 BUG_ON(skb->nohdr); 439 skb->nohdr = 1; 440 atomic_add(1 << SKB_DATAREF_SHIFT, &skb_shinfo(skb)->dataref); 441 } 442 443 /** 444 * skb_shared - is the buffer shared 445 * @skb: buffer to check 446 * 447 * Returns true if more than one person has a reference to this 448 * buffer. 449 */ 450 static inline int skb_shared(const struct sk_buff *skb) 451 { 452 return atomic_read(&skb->users) != 1; 453 } 454 455 /** 456 * skb_share_check - check if buffer is shared and if so clone it 457 * @skb: buffer to check 458 * @pri: priority for memory allocation 459 * 460 * If the buffer is shared the buffer is cloned and the old copy 461 * drops a reference. A new clone with a single reference is returned. 462 * If the buffer is not shared the original buffer is returned. When 463 * being called from interrupt status or with spinlocks held pri must 464 * be GFP_ATOMIC. 465 * 466 * NULL is returned on a memory allocation failure. 467 */ 468 static inline struct sk_buff *skb_share_check(struct sk_buff *skb, int pri) 469 { 470 might_sleep_if(pri & __GFP_WAIT); 471 if (skb_shared(skb)) { 472 struct sk_buff *nskb = skb_clone(skb, pri); 473 kfree_skb(skb); 474 skb = nskb; 475 } 476 return skb; 477 } 478 479 /* 480 * Copy shared buffers into a new sk_buff. We effectively do COW on 481 * packets to handle cases where we have a local reader and forward 482 * and a couple of other messy ones. The normal one is tcpdumping 483 * a packet thats being forwarded. 484 */ 485 486 /** 487 * skb_unshare - make a copy of a shared buffer 488 * @skb: buffer to check 489 * @pri: priority for memory allocation 490 * 491 * If the socket buffer is a clone then this function creates a new 492 * copy of the data, drops a reference count on the old copy and returns 493 * the new copy with the reference count at 1. If the buffer is not a clone 494 * the original buffer is returned. When called with a spinlock held or 495 * from interrupt state @pri must be %GFP_ATOMIC 496 * 497 * %NULL is returned on a memory allocation failure. 498 */ 499 static inline struct sk_buff *skb_unshare(struct sk_buff *skb, int pri) 500 { 501 might_sleep_if(pri & __GFP_WAIT); 502 if (skb_cloned(skb)) { 503 struct sk_buff *nskb = skb_copy(skb, pri); 504 kfree_skb(skb); /* Free our shared copy */ 505 skb = nskb; 506 } 507 return skb; 508 } 509 510 /** 511 * skb_peek 512 * @list_: list to peek at 513 * 514 * Peek an &sk_buff. Unlike most other operations you _MUST_ 515 * be careful with this one. A peek leaves the buffer on the 516 * list and someone else may run off with it. You must hold 517 * the appropriate locks or have a private queue to do this. 518 * 519 * Returns %NULL for an empty list or a pointer to the head element. 520 * The reference count is not incremented and the reference is therefore 521 * volatile. Use with caution. 522 */ 523 static inline struct sk_buff *skb_peek(struct sk_buff_head *list_) 524 { 525 struct sk_buff *list = ((struct sk_buff *)list_)->next; 526 if (list == (struct sk_buff *)list_) 527 list = NULL; 528 return list; 529 } 530 531 /** 532 * skb_peek_tail 533 * @list_: list to peek at 534 * 535 * Peek an &sk_buff. Unlike most other operations you _MUST_ 536 * be careful with this one. A peek leaves the buffer on the 537 * list and someone else may run off with it. You must hold 538 * the appropriate locks or have a private queue to do this. 539 * 540 * Returns %NULL for an empty list or a pointer to the tail element. 541 * The reference count is not incremented and the reference is therefore 542 * volatile. Use with caution. 543 */ 544 static inline struct sk_buff *skb_peek_tail(struct sk_buff_head *list_) 545 { 546 struct sk_buff *list = ((struct sk_buff *)list_)->prev; 547 if (list == (struct sk_buff *)list_) 548 list = NULL; 549 return list; 550 } 551 552 /** 553 * skb_queue_len - get queue length 554 * @list_: list to measure 555 * 556 * Return the length of an &sk_buff queue. 557 */ 558 static inline __u32 skb_queue_len(const struct sk_buff_head *list_) 559 { 560 return list_->qlen; 561 } 562 563 static inline void skb_queue_head_init(struct sk_buff_head *list) 564 { 565 spin_lock_init(&list->lock); 566 list->prev = list->next = (struct sk_buff *)list; 567 list->qlen = 0; 568 } 569 570 /* 571 * Insert an sk_buff at the start of a list. 572 * 573 * The "__skb_xxxx()" functions are the non-atomic ones that 574 * can only be called with interrupts disabled. 575 */ 576 577 /** 578 * __skb_queue_head - queue a buffer at the list head 579 * @list: list to use 580 * @newsk: buffer to queue 581 * 582 * Queue a buffer at the start of a list. This function takes no locks 583 * and you must therefore hold required locks before calling it. 584 * 585 * A buffer cannot be placed on two lists at the same time. 586 */ 587 extern void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk); 588 static inline void __skb_queue_head(struct sk_buff_head *list, 589 struct sk_buff *newsk) 590 { 591 struct sk_buff *prev, *next; 592 593 newsk->list = list; 594 list->qlen++; 595 prev = (struct sk_buff *)list; 596 next = prev->next; 597 newsk->next = next; 598 newsk->prev = prev; 599 next->prev = prev->next = newsk; 600 } 601 602 /** 603 * __skb_queue_tail - queue a buffer at the list tail 604 * @list: list to use 605 * @newsk: buffer to queue 606 * 607 * Queue a buffer at the end of a list. This function takes no locks 608 * and you must therefore hold required locks before calling it. 609 * 610 * A buffer cannot be placed on two lists at the same time. 611 */ 612 extern void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk); 613 static inline void __skb_queue_tail(struct sk_buff_head *list, 614 struct sk_buff *newsk) 615 { 616 struct sk_buff *prev, *next; 617 618 newsk->list = list; 619 list->qlen++; 620 next = (struct sk_buff *)list; 621 prev = next->prev; 622 newsk->next = next; 623 newsk->prev = prev; 624 next->prev = prev->next = newsk; 625 } 626 627 628 /** 629 * __skb_dequeue - remove from the head of the queue 630 * @list: list to dequeue from 631 * 632 * Remove the head of the list. This function does not take any locks 633 * so must be used with appropriate locks held only. The head item is 634 * returned or %NULL if the list is empty. 635 */ 636 extern struct sk_buff *skb_dequeue(struct sk_buff_head *list); 637 static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list) 638 { 639 struct sk_buff *next, *prev, *result; 640 641 prev = (struct sk_buff *) list; 642 next = prev->next; 643 result = NULL; 644 if (next != prev) { 645 result = next; 646 next = next->next; 647 list->qlen--; 648 next->prev = prev; 649 prev->next = next; 650 result->next = result->prev = NULL; 651 result->list = NULL; 652 } 653 return result; 654 } 655 656 657 /* 658 * Insert a packet on a list. 659 */ 660 extern void skb_insert(struct sk_buff *old, struct sk_buff *newsk); 661 static inline void __skb_insert(struct sk_buff *newsk, 662 struct sk_buff *prev, struct sk_buff *next, 663 struct sk_buff_head *list) 664 { 665 newsk->next = next; 666 newsk->prev = prev; 667 next->prev = prev->next = newsk; 668 newsk->list = list; 669 list->qlen++; 670 } 671 672 /* 673 * Place a packet after a given packet in a list. 674 */ 675 extern void skb_append(struct sk_buff *old, struct sk_buff *newsk); 676 static inline void __skb_append(struct sk_buff *old, struct sk_buff *newsk) 677 { 678 __skb_insert(newsk, old, old->next, old->list); 679 } 680 681 /* 682 * remove sk_buff from list. _Must_ be called atomically, and with 683 * the list known.. 684 */ 685 extern void skb_unlink(struct sk_buff *skb); 686 static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) 687 { 688 struct sk_buff *next, *prev; 689 690 list->qlen--; 691 next = skb->next; 692 prev = skb->prev; 693 skb->next = skb->prev = NULL; 694 skb->list = NULL; 695 next->prev = prev; 696 prev->next = next; 697 } 698 699 700 /* XXX: more streamlined implementation */ 701 702 /** 703 * __skb_dequeue_tail - remove from the tail of the queue 704 * @list: list to dequeue from 705 * 706 * Remove the tail of the list. This function does not take any locks 707 * so must be used with appropriate locks held only. The tail item is 708 * returned or %NULL if the list is empty. 709 */ 710 extern struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list); 711 static inline struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list) 712 { 713 struct sk_buff *skb = skb_peek_tail(list); 714 if (skb) 715 __skb_unlink(skb, list); 716 return skb; 717 } 718 719 720 static inline int skb_is_nonlinear(const struct sk_buff *skb) 721 { 722 return skb->data_len; 723 } 724 725 static inline unsigned int skb_headlen(const struct sk_buff *skb) 726 { 727 return skb->len - skb->data_len; 728 } 729 730 static inline int skb_pagelen(const struct sk_buff *skb) 731 { 732 int i, len = 0; 733 734 for (i = (int)skb_shinfo(skb)->nr_frags - 1; i >= 0; i--) 735 len += skb_shinfo(skb)->frags[i].size; 736 return len + skb_headlen(skb); 737 } 738 739 static inline void skb_fill_page_desc(struct sk_buff *skb, int i, 740 struct page *page, int off, int size) 741 { 742 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 743 744 frag->page = page; 745 frag->page_offset = off; 746 frag->size = size; 747 skb_shinfo(skb)->nr_frags = i + 1; 748 } 749 750 #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) 751 #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_shinfo(skb)->frag_list) 752 #define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb)) 753 754 /* 755 * Add data to an sk_buff 756 */ 757 static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) 758 { 759 unsigned char *tmp = skb->tail; 760 SKB_LINEAR_ASSERT(skb); 761 skb->tail += len; 762 skb->len += len; 763 return tmp; 764 } 765 766 /** 767 * skb_put - add data to a buffer 768 * @skb: buffer to use 769 * @len: amount of data to add 770 * 771 * This function extends the used data area of the buffer. If this would 772 * exceed the total buffer size the kernel will panic. A pointer to the 773 * first byte of the extra data is returned. 774 */ 775 static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len) 776 { 777 unsigned char *tmp = skb->tail; 778 SKB_LINEAR_ASSERT(skb); 779 skb->tail += len; 780 skb->len += len; 781 if (unlikely(skb->tail>skb->end)) 782 skb_over_panic(skb, len, current_text_addr()); 783 return tmp; 784 } 785 786 static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len) 787 { 788 skb->data -= len; 789 skb->len += len; 790 return skb->data; 791 } 792 793 /** 794 * skb_push - add data to the start of a buffer 795 * @skb: buffer to use 796 * @len: amount of data to add 797 * 798 * This function extends the used data area of the buffer at the buffer 799 * start. If this would exceed the total buffer headroom the kernel will 800 * panic. A pointer to the first byte of the extra data is returned. 801 */ 802 static inline unsigned char *skb_push(struct sk_buff *skb, unsigned int len) 803 { 804 skb->data -= len; 805 skb->len += len; 806 if (unlikely(skb->data<skb->head)) 807 skb_under_panic(skb, len, current_text_addr()); 808 return skb->data; 809 } 810 811 static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len) 812 { 813 skb->len -= len; 814 BUG_ON(skb->len < skb->data_len); 815 return skb->data += len; 816 } 817 818 /** 819 * skb_pull - remove data from the start of a buffer 820 * @skb: buffer to use 821 * @len: amount of data to remove 822 * 823 * This function removes data from the start of a buffer, returning 824 * the memory to the headroom. A pointer to the next data in the buffer 825 * is returned. Once the data has been pulled future pushes will overwrite 826 * the old data. 827 */ 828 static inline unsigned char *skb_pull(struct sk_buff *skb, unsigned int len) 829 { 830 return unlikely(len > skb->len) ? NULL : __skb_pull(skb, len); 831 } 832 833 extern unsigned char *__pskb_pull_tail(struct sk_buff *skb, int delta); 834 835 static inline unsigned char *__pskb_pull(struct sk_buff *skb, unsigned int len) 836 { 837 if (len > skb_headlen(skb) && 838 !__pskb_pull_tail(skb, len-skb_headlen(skb))) 839 return NULL; 840 skb->len -= len; 841 return skb->data += len; 842 } 843 844 static inline unsigned char *pskb_pull(struct sk_buff *skb, unsigned int len) 845 { 846 return unlikely(len > skb->len) ? NULL : __pskb_pull(skb, len); 847 } 848 849 static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len) 850 { 851 if (likely(len <= skb_headlen(skb))) 852 return 1; 853 if (unlikely(len > skb->len)) 854 return 0; 855 return __pskb_pull_tail(skb, len-skb_headlen(skb)) != NULL; 856 } 857 858 /** 859 * skb_headroom - bytes at buffer head 860 * @skb: buffer to check 861 * 862 * Return the number of bytes of free space at the head of an &sk_buff. 863 */ 864 static inline int skb_headroom(const struct sk_buff *skb) 865 { 866 return skb->data - skb->head; 867 } 868 869 /** 870 * skb_tailroom - bytes at buffer end 871 * @skb: buffer to check 872 * 873 * Return the number of bytes of free space at the tail of an sk_buff 874 */ 875 static inline int skb_tailroom(const struct sk_buff *skb) 876 { 877 return skb_is_nonlinear(skb) ? 0 : skb->end - skb->tail; 878 } 879 880 /** 881 * skb_reserve - adjust headroom 882 * @skb: buffer to alter 883 * @len: bytes to move 884 * 885 * Increase the headroom of an empty &sk_buff by reducing the tail 886 * room. This is only allowed for an empty buffer. 887 */ 888 static inline void skb_reserve(struct sk_buff *skb, unsigned int len) 889 { 890 skb->data += len; 891 skb->tail += len; 892 } 893 894 /* 895 * CPUs often take a performance hit when accessing unaligned memory 896 * locations. The actual performance hit varies, it can be small if the 897 * hardware handles it or large if we have to take an exception and fix it 898 * in software. 899 * 900 * Since an ethernet header is 14 bytes network drivers often end up with 901 * the IP header at an unaligned offset. The IP header can be aligned by 902 * shifting the start of the packet by 2 bytes. Drivers should do this 903 * with: 904 * 905 * skb_reserve(NET_IP_ALIGN); 906 * 907 * The downside to this alignment of the IP header is that the DMA is now 908 * unaligned. On some architectures the cost of an unaligned DMA is high 909 * and this cost outweighs the gains made by aligning the IP header. 910 * 911 * Since this trade off varies between architectures, we allow NET_IP_ALIGN 912 * to be overridden. 913 */ 914 #ifndef NET_IP_ALIGN 915 #define NET_IP_ALIGN 2 916 #endif 917 918 extern int ___pskb_trim(struct sk_buff *skb, unsigned int len, int realloc); 919 920 static inline void __skb_trim(struct sk_buff *skb, unsigned int len) 921 { 922 if (!skb->data_len) { 923 skb->len = len; 924 skb->tail = skb->data + len; 925 } else 926 ___pskb_trim(skb, len, 0); 927 } 928 929 /** 930 * skb_trim - remove end from a buffer 931 * @skb: buffer to alter 932 * @len: new length 933 * 934 * Cut the length of a buffer down by removing data from the tail. If 935 * the buffer is already under the length specified it is not modified. 936 */ 937 static inline void skb_trim(struct sk_buff *skb, unsigned int len) 938 { 939 if (skb->len > len) 940 __skb_trim(skb, len); 941 } 942 943 944 static inline int __pskb_trim(struct sk_buff *skb, unsigned int len) 945 { 946 if (!skb->data_len) { 947 skb->len = len; 948 skb->tail = skb->data+len; 949 return 0; 950 } 951 return ___pskb_trim(skb, len, 1); 952 } 953 954 static inline int pskb_trim(struct sk_buff *skb, unsigned int len) 955 { 956 return (len < skb->len) ? __pskb_trim(skb, len) : 0; 957 } 958 959 /** 960 * skb_orphan - orphan a buffer 961 * @skb: buffer to orphan 962 * 963 * If a buffer currently has an owner then we call the owner's 964 * destructor function and make the @skb unowned. The buffer continues 965 * to exist but is no longer charged to its former owner. 966 */ 967 static inline void skb_orphan(struct sk_buff *skb) 968 { 969 if (skb->destructor) 970 skb->destructor(skb); 971 skb->destructor = NULL; 972 skb->sk = NULL; 973 } 974 975 /** 976 * __skb_queue_purge - empty a list 977 * @list: list to empty 978 * 979 * Delete all buffers on an &sk_buff list. Each buffer is removed from 980 * the list and one reference dropped. This function does not take the 981 * list lock and the caller must hold the relevant locks to use it. 982 */ 983 extern void skb_queue_purge(struct sk_buff_head *list); 984 static inline void __skb_queue_purge(struct sk_buff_head *list) 985 { 986 struct sk_buff *skb; 987 while ((skb = __skb_dequeue(list)) != NULL) 988 kfree_skb(skb); 989 } 990 991 #ifndef CONFIG_HAVE_ARCH_DEV_ALLOC_SKB 992 /** 993 * __dev_alloc_skb - allocate an skbuff for sending 994 * @length: length to allocate 995 * @gfp_mask: get_free_pages mask, passed to alloc_skb 996 * 997 * Allocate a new &sk_buff and assign it a usage count of one. The 998 * buffer has unspecified headroom built in. Users should allocate 999 * the headroom they think they need without accounting for the 1000 * built in space. The built in space is used for optimisations. 1001 * 1002 * %NULL is returned in there is no free memory. 1003 */ 1004 static inline struct sk_buff *__dev_alloc_skb(unsigned int length, 1005 int gfp_mask) 1006 { 1007 struct sk_buff *skb = alloc_skb(length + 16, gfp_mask); 1008 if (likely(skb)) 1009 skb_reserve(skb, 16); 1010 return skb; 1011 } 1012 #else 1013 extern struct sk_buff *__dev_alloc_skb(unsigned int length, int gfp_mask); 1014 #endif 1015 1016 /** 1017 * dev_alloc_skb - allocate an skbuff for sending 1018 * @length: length to allocate 1019 * 1020 * Allocate a new &sk_buff and assign it a usage count of one. The 1021 * buffer has unspecified headroom built in. Users should allocate 1022 * the headroom they think they need without accounting for the 1023 * built in space. The built in space is used for optimisations. 1024 * 1025 * %NULL is returned in there is no free memory. Although this function 1026 * allocates memory it can be called from an interrupt. 1027 */ 1028 static inline struct sk_buff *dev_alloc_skb(unsigned int length) 1029 { 1030 return __dev_alloc_skb(length, GFP_ATOMIC); 1031 } 1032 1033 /** 1034 * skb_cow - copy header of skb when it is required 1035 * @skb: buffer to cow 1036 * @headroom: needed headroom 1037 * 1038 * If the skb passed lacks sufficient headroom or its data part 1039 * is shared, data is reallocated. If reallocation fails, an error 1040 * is returned and original skb is not changed. 1041 * 1042 * The result is skb with writable area skb->head...skb->tail 1043 * and at least @headroom of space at head. 1044 */ 1045 static inline int skb_cow(struct sk_buff *skb, unsigned int headroom) 1046 { 1047 int delta = (headroom > 16 ? headroom : 16) - skb_headroom(skb); 1048 1049 if (delta < 0) 1050 delta = 0; 1051 1052 if (delta || skb_cloned(skb)) 1053 return pskb_expand_head(skb, (delta + 15) & ~15, 0, GFP_ATOMIC); 1054 return 0; 1055 } 1056 1057 /** 1058 * skb_padto - pad an skbuff up to a minimal size 1059 * @skb: buffer to pad 1060 * @len: minimal length 1061 * 1062 * Pads up a buffer to ensure the trailing bytes exist and are 1063 * blanked. If the buffer already contains sufficient data it 1064 * is untouched. Returns the buffer, which may be a replacement 1065 * for the original, or NULL for out of memory - in which case 1066 * the original buffer is still freed. 1067 */ 1068 1069 static inline struct sk_buff *skb_padto(struct sk_buff *skb, unsigned int len) 1070 { 1071 unsigned int size = skb->len; 1072 if (likely(size >= len)) 1073 return skb; 1074 return skb_pad(skb, len-size); 1075 } 1076 1077 static inline int skb_add_data(struct sk_buff *skb, 1078 char __user *from, int copy) 1079 { 1080 const int off = skb->len; 1081 1082 if (skb->ip_summed == CHECKSUM_NONE) { 1083 int err = 0; 1084 unsigned int csum = csum_and_copy_from_user(from, 1085 skb_put(skb, copy), 1086 copy, 0, &err); 1087 if (!err) { 1088 skb->csum = csum_block_add(skb->csum, csum, off); 1089 return 0; 1090 } 1091 } else if (!copy_from_user(skb_put(skb, copy), from, copy)) 1092 return 0; 1093 1094 __skb_trim(skb, off); 1095 return -EFAULT; 1096 } 1097 1098 static inline int skb_can_coalesce(struct sk_buff *skb, int i, 1099 struct page *page, int off) 1100 { 1101 if (i) { 1102 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1]; 1103 1104 return page == frag->page && 1105 off == frag->page_offset + frag->size; 1106 } 1107 return 0; 1108 } 1109 1110 /** 1111 * skb_linearize - convert paged skb to linear one 1112 * @skb: buffer to linarize 1113 * @gfp: allocation mode 1114 * 1115 * If there is no free memory -ENOMEM is returned, otherwise zero 1116 * is returned and the old skb data released. 1117 */ 1118 extern int __skb_linearize(struct sk_buff *skb, int gfp); 1119 static inline int skb_linearize(struct sk_buff *skb, int gfp) 1120 { 1121 return __skb_linearize(skb, gfp); 1122 } 1123 1124 /** 1125 * skb_postpull_rcsum - update checksum for received skb after pull 1126 * @skb: buffer to update 1127 * @start: start of data before pull 1128 * @len: length of data pulled 1129 * 1130 * After doing a pull on a received packet, you need to call this to 1131 * update the CHECKSUM_HW checksum, or set ip_summed to CHECKSUM_NONE 1132 * so that it can be recomputed from scratch. 1133 */ 1134 1135 static inline void skb_postpull_rcsum(struct sk_buff *skb, 1136 const void *start, int len) 1137 { 1138 if (skb->ip_summed == CHECKSUM_HW) 1139 skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0)); 1140 } 1141 1142 /** 1143 * pskb_trim_rcsum - trim received skb and update checksum 1144 * @skb: buffer to trim 1145 * @len: new length 1146 * 1147 * This is exactly the same as pskb_trim except that it ensures the 1148 * checksum of received packets are still valid after the operation. 1149 */ 1150 1151 static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len) 1152 { 1153 if (len >= skb->len) 1154 return 0; 1155 if (skb->ip_summed == CHECKSUM_HW) 1156 skb->ip_summed = CHECKSUM_NONE; 1157 return __pskb_trim(skb, len); 1158 } 1159 1160 static inline void *kmap_skb_frag(const skb_frag_t *frag) 1161 { 1162 #ifdef CONFIG_HIGHMEM 1163 BUG_ON(in_irq()); 1164 1165 local_bh_disable(); 1166 #endif 1167 return kmap_atomic(frag->page, KM_SKB_DATA_SOFTIRQ); 1168 } 1169 1170 static inline void kunmap_skb_frag(void *vaddr) 1171 { 1172 kunmap_atomic(vaddr, KM_SKB_DATA_SOFTIRQ); 1173 #ifdef CONFIG_HIGHMEM 1174 local_bh_enable(); 1175 #endif 1176 } 1177 1178 #define skb_queue_walk(queue, skb) \ 1179 for (skb = (queue)->next; \ 1180 prefetch(skb->next), (skb != (struct sk_buff *)(queue)); \ 1181 skb = skb->next) 1182 1183 1184 extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, 1185 int noblock, int *err); 1186 extern unsigned int datagram_poll(struct file *file, struct socket *sock, 1187 struct poll_table_struct *wait); 1188 extern int skb_copy_datagram_iovec(const struct sk_buff *from, 1189 int offset, struct iovec *to, 1190 int size); 1191 extern int skb_copy_and_csum_datagram_iovec(const 1192 struct sk_buff *skb, 1193 int hlen, 1194 struct iovec *iov); 1195 extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); 1196 extern unsigned int skb_checksum(const struct sk_buff *skb, int offset, 1197 int len, unsigned int csum); 1198 extern int skb_copy_bits(const struct sk_buff *skb, int offset, 1199 void *to, int len); 1200 extern int skb_store_bits(const struct sk_buff *skb, int offset, 1201 void *from, int len); 1202 extern unsigned int skb_copy_and_csum_bits(const struct sk_buff *skb, 1203 int offset, u8 *to, int len, 1204 unsigned int csum); 1205 extern void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to); 1206 extern void skb_split(struct sk_buff *skb, 1207 struct sk_buff *skb1, const u32 len); 1208 1209 static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, 1210 int len, void *buffer) 1211 { 1212 int hlen = skb_headlen(skb); 1213 1214 if (offset + len <= hlen) 1215 return skb->data + offset; 1216 1217 if (skb_copy_bits(skb, offset, buffer, len) < 0) 1218 return NULL; 1219 1220 return buffer; 1221 } 1222 1223 extern void skb_init(void); 1224 extern void skb_add_mtu(int mtu); 1225 1226 #ifdef CONFIG_NETFILTER 1227 static inline void nf_conntrack_put(struct nf_conntrack *nfct) 1228 { 1229 if (nfct && atomic_dec_and_test(&nfct->use)) 1230 nfct->destroy(nfct); 1231 } 1232 static inline void nf_conntrack_get(struct nf_conntrack *nfct) 1233 { 1234 if (nfct) 1235 atomic_inc(&nfct->use); 1236 } 1237 static inline void nf_reset(struct sk_buff *skb) 1238 { 1239 nf_conntrack_put(skb->nfct); 1240 skb->nfct = NULL; 1241 } 1242 1243 #ifdef CONFIG_BRIDGE_NETFILTER 1244 static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge) 1245 { 1246 if (nf_bridge && atomic_dec_and_test(&nf_bridge->use)) 1247 kfree(nf_bridge); 1248 } 1249 static inline void nf_bridge_get(struct nf_bridge_info *nf_bridge) 1250 { 1251 if (nf_bridge) 1252 atomic_inc(&nf_bridge->use); 1253 } 1254 #endif /* CONFIG_BRIDGE_NETFILTER */ 1255 #else /* CONFIG_NETFILTER */ 1256 static inline void nf_reset(struct sk_buff *skb) {} 1257 #endif /* CONFIG_NETFILTER */ 1258 1259 #endif /* __KERNEL__ */ 1260 #endif /* _LINUX_SKBUFF_H */ 1261