skb_eth_pop(9)
π skb_eth_pop(9) π
okay so this is a page from the Kernel API Manual, bestie, and it's about the tiniest little glow-up a packet can get: yeeting its Ethernet header. come learn with me π«Ά
β¨ NAME β¨
skb_eth_pop β drop the Ethernet header at the head of a packet
like, it's right there at the front of the packet, and we're removing it. slay.
πΈ SYNOPSIS πΈ
int skb_eth_pop (struct sk_buff *skb );
that's the whole signature, no cap. it hands you back an int and takes exactly one socket buffer. π
π ARGUMENTS π
skbβ the socket buffer you're about to modify, aka the packet in question, aka the main character π¦
π DESCRIPTION π
So like. this function drops the Ethernet header of skb. literally just pops it off the front. gone. iconic behavior honestly.
It expects two things, and this is the important part so don't skip it π:
- that
skb->datapoints to the mac header β that's the starting position it's working from - that no VLAN tags are present β none. zero. if there are VLAN tags in the mix, that's not what this function signed up for, so don't come at it with those
Returns 0 on success, and -errno otherwise. so basically 0 means we ate and left no crumbs, and anything negative is the kernel telling you it didn't go well π
no extra behavior is described beyond this β the page tells you exactly what it expects and exactly what it returns, so that's what we're going with π
π¦ SEE ALSO π¦
bestie. the linked list on this one is long, and it is a whole vibe. the kernel file is ./net/core/skbuff.c, and then the entire extended skb family shows up π:
drop_reasons_register_subsys(9), drop_reasons_unregister_subsys(9), skb_panic(9), napi_skb_cache_get_bulk(9), __build_skb(9), build_skb_around(9), __napi_build_skb(9), napi_build_skb(9), __alloc_skb(9), __netdev_alloc_skb(9), napi_alloc_skb(9), skb_pp_cow_data(9), skb_pp_frag_ref(9), __kfree_skb(9), sk_skb_reason_drop(9), skb_tx_error(9), consume_skb(9), __consume_stateless_skb(9), napi_consume_skb(9), alloc_skb_for_msg(9), skb_morph(9), skb_copy_ubufs(9), skb_clone(9), skb_copy(9), __pskb_copy_fclone(9), pskb_expand_head(9), skb_expand_head(9), skb_copy_expand(9), __skb_pad(9), pskb_put(9), skb_put(9), skb_push(9), skb_pull(9), skb_pull_data(9), skb_trim(9), __pskb_pull_tail(9), skb_copy_bits(9), skb_store_bits(9), skb_zerocopy(9), skb_dequeue(9), skb_dequeue_tail(9), skb_queue_purge_reason(9), skb_rbtree_purge(9), skb_queue_head(9), skb_queue_tail(9), skb_unlink(9), skb_append(9), skb_split(9), skb_shift(9), skb_prepare_seq_read(9), skb_seq_read(9), skb_abort_seq_read(9), skb_copy_seq_read(9), skb_find_text(9), skb_pull_rcsum(9), skb_segment(9), skb_to_sgvec(9), skb_cow_data(9), skb_clone_sk(9),
and there's more, because of course there is π:
skb_partial_csum_set(9), skb_checksum_setup(9), skb_checksum_maybe_trim(9), skb_checksum_trimmed(9), skb_try_coalesce(9), skb_scrub_packet(9), skb_eth_push(9), skb_mpls_push(9), skb_mpls_pop(9), skb_mpls_update_lse(9), skb_mpls_dec_ttl(9), alloc_skb_with_frags(9), skb_condense(9), __skb_ext_alloc(9), __skb_ext_set(9), skb_ext_add(9), skb_attempt_defer_free(9), skb_splice_from_iter(9)
honestly? reading the whole list is a personality trait at this point. iykyk π
and that's the page!! tysm for reading, mwah π this little cutie lives under ./net/core and the version we're looking at is dated October 2026 β go forth and pop those headers, bestie, and remember the manual entry is skb_eth_pop(9). periodt. π
β¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms