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