Lines Matching refs:skb

56  * @skb: packet buffer which should be modified
61 int batadv_skb_head_push(struct sk_buff *skb, unsigned int len)
68 * or write any data which is before the current position of skb->data
72 result = skb_cow_head(skb, len);
76 skb_push(skb, len);
180 static netdev_tx_t batadv_interface_tx(struct sk_buff *skb,
195 int data_len = skb->len, ret;
210 memset(skb->cb, 0, sizeof(struct batadv_skb_cb));
213 vid = batadv_get_vid(skb, 0);
215 skb_reset_mac_header(skb);
216 ethhdr = eth_hdr(skb);
222 if (!pskb_may_pull(skb, sizeof(*vhdr)))
224 vhdr = vlan_eth_hdr(skb);
238 skb_set_network_header(skb, network_offset);
240 if (batadv_bla_tx(bat_priv, skb, vid))
243 /* skb->data might have been reallocated by batadv_bla_tx() */
244 ethhdr = eth_hdr(skb);
250 vid, skb->skb_iif,
251 skb->mark);
257 batadv_dat_snoop_outgoing_dhcp_ack(bat_priv, skb, proto, vid);
279 dhcp_rcp = batadv_gw_dhcp_recipient_get(skb, &header_len,
281 /* skb->data may have been modified by
284 ethhdr = eth_hdr(skb);
304 forw_mode = batadv_mcast_forw_mode(bat_priv, skb, vid,
321 batadv_skb_set_priority(skb, 0);
333 if (batadv_dat_snoop_outgoing_arp_request(bat_priv, skb))
336 if (batadv_skb_head_push(skb, sizeof(*bcast_packet)) < 0)
339 bcast_packet = (struct batadv_bcast_packet *)skb->data;
357 batadv_send_bcast_packet(bat_priv, skb, brd_delay, true);
362 ret = batadv_gw_out_of_range(bat_priv, skb);
365 ret = batadv_send_skb_via_gw(bat_priv, skb, vid);
367 ret = batadv_mcast_forw_send(bat_priv, skb, vid,
370 ret = batadv_mcast_forw_mcsend(bat_priv, skb);
373 skb))
376 batadv_dat_snoop_outgoing_arp_reply(bat_priv, skb);
378 ret = batadv_send_skb_via_tt(bat_priv, skb, dst_hint,
390 kfree_skb(skb);
401 * @skb: ethernet frame for @soft_iface
406 * skb->data has still point to the batman-adv header with the size @hdr_size.
408 * @hdr_size bytes are still available for pull in @skb.
416 struct sk_buff *skb, int hdr_size,
426 batadv_bcast_packet = (struct batadv_bcast_packet *)skb->data;
429 skb_pull_rcsum(skb, hdr_size);
430 skb_reset_mac_header(skb);
435 nf_reset_ct(skb);
437 if (unlikely(!pskb_may_pull(skb, ETH_HLEN)))
440 vid = batadv_get_vid(skb, 0);
441 ethhdr = eth_hdr(skb);
445 if (!pskb_may_pull(skb, VLAN_ETH_HLEN))
448 vhdr = skb_vlan_eth_hdr(skb);
459 /* skb->dev & skb->pkt_type are set here */
460 skb->protocol = eth_type_trans(skb, soft_iface);
461 skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN);
465 skb->len + ETH_HLEN);
470 if (batadv_bla_rx(bat_priv, skb, vid, packet_type))
484 /* save bits in skb->mark not covered by the mask and
487 skb->mark &= ~bat_priv->isolation_mark_mask;
488 skb->mark |= bat_priv->isolation_mark;
495 netif_rx(skb);
499 kfree_skb(skb);