Lines Matching refs:skb
53 static int dn_neigh_output(struct neighbour *neigh, struct sk_buff *skb);
166 static void dn_neigh_error_report(struct neighbour *neigh, struct sk_buff *skb) in dn_neigh_error_report() argument
169 kfree_skb(skb); in dn_neigh_error_report()
172 static int dn_neigh_output(struct neighbour *neigh, struct sk_buff *skb) in dn_neigh_output() argument
174 struct dst_entry *dst = skb_dst(skb); in dn_neigh_output()
184 err = dev_hard_header(skb, dev, ntohs(skb->protocol), in dn_neigh_output()
185 neigh->ha, mac_addr, skb->len); in dn_neigh_output()
189 err = dev_queue_xmit(skb); in dn_neigh_output()
191 kfree_skb(skb); in dn_neigh_output()
197 static int dn_neigh_output_packet(struct sock *sk, struct sk_buff *skb) in dn_neigh_output_packet() argument
199 struct dst_entry *dst = skb_dst(skb); in dn_neigh_output_packet()
203 return neigh->output(neigh, skb); in dn_neigh_output_packet()
210 struct sk_buff *skb) in dn_long_output() argument
216 struct dn_skb_cb *cb = DN_SKB_CB(skb); in dn_long_output()
219 if (skb_headroom(skb) < headroom) { in dn_long_output()
220 struct sk_buff *skb2 = skb_realloc_headroom(skb, headroom); in dn_long_output()
223 kfree_skb(skb); in dn_long_output()
226 consume_skb(skb); in dn_long_output()
227 skb = skb2; in dn_long_output()
231 data = skb_push(skb, sizeof(struct dn_long_packet) + 3); in dn_long_output()
234 *((__le16 *)data) = cpu_to_le16(skb->len - 2); in dn_long_output()
247 skb_reset_network_header(skb); in dn_long_output()
249 return NF_HOOK(NFPROTO_DECNET, NF_DN_POST_ROUTING, sk, skb, in dn_long_output()
257 struct sk_buff *skb) in dn_short_output() argument
263 struct dn_skb_cb *cb = DN_SKB_CB(skb); in dn_short_output()
266 if (skb_headroom(skb) < headroom) { in dn_short_output()
267 struct sk_buff *skb2 = skb_realloc_headroom(skb, headroom); in dn_short_output()
270 kfree_skb(skb); in dn_short_output()
273 consume_skb(skb); in dn_short_output()
274 skb = skb2; in dn_short_output()
278 data = skb_push(skb, sizeof(struct dn_short_packet) + 2); in dn_short_output()
279 *((__le16 *)data) = cpu_to_le16(skb->len - 2); in dn_short_output()
287 skb_reset_network_header(skb); in dn_short_output()
289 return NF_HOOK(NFPROTO_DECNET, NF_DN_POST_ROUTING, sk, skb, in dn_short_output()
299 struct sk_buff *skb) in dn_phase3_output() argument
305 struct dn_skb_cb *cb = DN_SKB_CB(skb); in dn_phase3_output()
307 if (skb_headroom(skb) < headroom) { in dn_phase3_output()
308 struct sk_buff *skb2 = skb_realloc_headroom(skb, headroom); in dn_phase3_output()
311 kfree_skb(skb); in dn_phase3_output()
314 consume_skb(skb); in dn_phase3_output()
315 skb = skb2; in dn_phase3_output()
319 data = skb_push(skb, sizeof(struct dn_short_packet) + 2); in dn_phase3_output()
320 *((__le16 *)data) = cpu_to_le16(skb->len - 2); in dn_phase3_output()
328 skb_reset_network_header(skb); in dn_phase3_output()
330 return NF_HOOK(NFPROTO_DECNET, NF_DN_POST_ROUTING, sk, skb, in dn_phase3_output()
334 int dn_to_neigh_output(struct sock *sk, struct sk_buff *skb) in dn_to_neigh_output() argument
336 struct dst_entry *dst = skb_dst(skb); in dn_to_neigh_output()
353 return dn_phase3_output(neigh, sk, skb); in dn_to_neigh_output()
355 return dn_long_output(neigh, sk, skb); in dn_to_neigh_output()
357 return dn_short_output(neigh, sk, skb); in dn_to_neigh_output()
370 void dn_neigh_pointopoint_hello(struct sk_buff *skb) in dn_neigh_pointopoint_hello() argument
372 kfree_skb(skb); in dn_neigh_pointopoint_hello()
378 int dn_neigh_router_hello(struct sock *sk, struct sk_buff *skb) in dn_neigh_router_hello() argument
380 struct rtnode_hello_message *msg = (struct rtnode_hello_message *)skb->data; in dn_neigh_router_hello()
389 neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1); in dn_neigh_router_hello()
403 memcpy(neigh->ha, ð_hdr(skb)->h_source, ETH_ALEN); in dn_neigh_router_hello()
433 kfree_skb(skb); in dn_neigh_router_hello()
440 int dn_neigh_endnode_hello(struct sock *sk, struct sk_buff *skb) in dn_neigh_endnode_hello() argument
442 struct endnode_hello_message *msg = (struct endnode_hello_message *)skb->data; in dn_neigh_endnode_hello()
449 neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1); in dn_neigh_endnode_hello()
462 memcpy(neigh->ha, ð_hdr(skb)->h_source, ETH_ALEN); in dn_neigh_endnode_hello()
472 kfree_skb(skb); in dn_neigh_endnode_hello()