Lines Matching refs:sk

87 ip_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
99 int __ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb) in __ip_local_out() argument
106 net, sk, skb, NULL, skb_dst(skb)->dev, in __ip_local_out()
110 int ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb) in ip_local_out() argument
114 err = __ip_local_out(net, sk, skb); in ip_local_out()
116 err = dst_output(net, sk, skb); in ip_local_out()
135 int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk, in ip_build_and_send_pkt() argument
138 struct inet_sock *inet = inet_sk(sk); in ip_build_and_send_pkt()
140 struct net *net = sock_net(sk); in ip_build_and_send_pkt()
153 iph->protocol = sk->sk_protocol; in ip_build_and_send_pkt()
154 if (ip_dont_fragment(sk, &rt->dst)) { in ip_build_and_send_pkt()
167 skb->priority = sk->sk_priority; in ip_build_and_send_pkt()
168 skb->mark = sk->sk_mark; in ip_build_and_send_pkt()
171 return ip_local_out(net, skb->sk, skb); in ip_build_and_send_pkt()
175 static int ip_finish_output2(struct net *net, struct sock *sk, struct sk_buff *skb) in ip_finish_output2() argument
198 if (skb->sk) in ip_finish_output2()
199 skb_set_owner_w(skb2, skb->sk); in ip_finish_output2()
223 static int ip_finish_output_gso(struct net *net, struct sock *sk, in ip_finish_output_gso() argument
233 return ip_finish_output2(net, sk, skb); in ip_finish_output_gso()
257 err = ip_fragment(net, sk, segs, mtu, ip_finish_output2); in ip_finish_output_gso()
267 static int ip_finish_output(struct net *net, struct sock *sk, struct sk_buff *skb) in ip_finish_output() argument
275 return dst_output(net, sk, skb); in ip_finish_output()
280 return ip_finish_output_gso(net, sk, skb, mtu); in ip_finish_output()
283 return ip_fragment(net, sk, skb, mtu, ip_finish_output2); in ip_finish_output()
285 return ip_finish_output2(net, sk, skb); in ip_finish_output()
288 int ip_mc_output(struct net *net, struct sock *sk, struct sk_buff *skb) in ip_mc_output() argument
306 if (sk_mc_loop(sk) in ip_mc_output()
324 net, sk, newskb, NULL, newskb->dev, in ip_mc_output()
340 net, sk, newskb, NULL, newskb->dev, in ip_mc_output()
345 net, sk, skb, NULL, skb->dev, in ip_mc_output()
350 int ip_output(struct net *net, struct sock *sk, struct sk_buff *skb) in ip_output() argument
360 net, sk, skb, NULL, dev, in ip_output()
380 int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl) in ip_queue_xmit() argument
382 struct inet_sock *inet = inet_sk(sk); in ip_queue_xmit()
383 struct net *net = sock_net(sk); in ip_queue_xmit()
401 rt = (struct rtable *)__sk_dst_check(sk, 0); in ip_queue_xmit()
414 rt = ip_route_output_ports(net, fl4, sk, in ip_queue_xmit()
418 sk->sk_protocol, in ip_queue_xmit()
419 RT_CONN_FLAGS(sk), in ip_queue_xmit()
420 sk->sk_bound_dev_if); in ip_queue_xmit()
423 sk_setup_caps(sk, &rt->dst); in ip_queue_xmit()
436 if (ip_dont_fragment(sk, &rt->dst) && !skb->ignore_df) in ip_queue_xmit()
441 iph->protocol = sk->sk_protocol; in ip_queue_xmit()
451 ip_select_ident_segs(net, skb, sk, in ip_queue_xmit()
455 skb->priority = sk->sk_priority; in ip_queue_xmit()
456 skb->mark = sk->sk_mark; in ip_queue_xmit()
458 res = ip_local_out(net, sk, skb); in ip_queue_xmit()
493 static int ip_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, in ip_fragment() argument
500 return ip_do_fragment(net, sk, skb, output); in ip_fragment()
512 return ip_do_fragment(net, sk, skb, output); in ip_fragment()
522 int ip_do_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, in ip_do_fragment() argument
588 BUG_ON(frag->sk); in ip_do_fragment()
589 if (skb->sk) { in ip_do_fragment()
590 frag->sk = skb->sk; in ip_do_fragment()
630 err = output(net, sk, skb); in ip_do_fragment()
659 frag2->sk = NULL; in ip_do_fragment()
717 if (skb->sk) in ip_do_fragment()
718 skb_set_owner_w(skb2, skb->sk); in ip_do_fragment()
767 err = output(net, sk, skb2); in ip_do_fragment()
813 static inline int ip_ufo_append_data(struct sock *sk, in ip_ufo_append_data() argument
829 skb = sock_alloc_send_skb(sk, in ip_ufo_append_data()
861 return skb_append_datato_frags(sk, skb, getfrag, from, in ip_ufo_append_data()
865 static int __ip_append_data(struct sock *sk, in __ip_append_data() argument
875 struct inet_sock *inet = inet_sk(sk); in __ip_append_data()
895 sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID) in __ip_append_data()
896 tskey = sk->sk_tskey++; in __ip_append_data()
902 maxnonfragsize = ip_sk_ignore_df(sk) ? 0xFFFF : mtu; in __ip_append_data()
905 ip_local_error(sk, EMSGSIZE, fl4->daddr, inet->inet_dport, in __ip_append_data()
923 (sk->sk_protocol == IPPROTO_UDP) && in __ip_append_data()
925 (sk->sk_type == SOCK_DGRAM) && !sk->sk_no_check_tx) { in __ip_append_data()
926 err = ip_ufo_append_data(sk, queue, getfrag, from, length, in __ip_append_data()
989 skb = sock_alloc_send_skb(sk, in __ip_append_data()
994 if (atomic_read(&sk->sk_wmem_alloc) <= in __ip_append_data()
995 2 * sk->sk_sndbuf) in __ip_append_data()
996 skb = sock_wmalloc(sk, in __ip_append_data()
998 sk->sk_allocation); in __ip_append_data()
1074 if (!sk_page_frag_refill(sk, pfrag)) in __ip_append_data()
1099 atomic_add(copy, &sk->sk_wmem_alloc); in __ip_append_data()
1111 IP_INC_STATS(sock_net(sk), IPSTATS_MIB_OUTDISCARDS); in __ip_append_data()
1115 static int ip_setup_cork(struct sock *sk, struct inet_cork *cork, in ip_setup_cork() argument
1128 sk->sk_allocation); in ip_setup_cork()
1143 cork->fragsize = ip_sk_use_pmtu(sk) ? in ip_setup_cork()
1166 int ip_append_data(struct sock *sk, struct flowi4 *fl4, in ip_append_data() argument
1173 struct inet_sock *inet = inet_sk(sk); in ip_append_data()
1179 if (skb_queue_empty(&sk->sk_write_queue)) { in ip_append_data()
1180 err = ip_setup_cork(sk, &inet->cork.base, ipc, rtp); in ip_append_data()
1187 return __ip_append_data(sk, fl4, &sk->sk_write_queue, &inet->cork.base, in ip_append_data()
1188 sk_page_frag(sk), getfrag, in ip_append_data()
1192 ssize_t ip_append_page(struct sock *sk, struct flowi4 *fl4, struct page *page, in ip_append_page() argument
1195 struct inet_sock *inet = inet_sk(sk); in ip_append_page()
1212 if (skb_queue_empty(&sk->sk_write_queue)) in ip_append_page()
1228 maxnonfragsize = ip_sk_ignore_df(sk) ? 0xFFFF : mtu; in ip_append_page()
1231 ip_local_error(sk, EMSGSIZE, fl4->daddr, inet->inet_dport, in ip_append_page()
1236 skb = skb_peek_tail(&sk->sk_write_queue); in ip_append_page()
1241 (sk->sk_protocol == IPPROTO_UDP) && in ip_append_page()
1269 skb = sock_wmalloc(sk, alloclen, 1, sk->sk_allocation); in ip_append_page()
1302 __skb_queue_tail(&sk->sk_write_queue, skb); in ip_append_page()
1323 atomic_add(len, &sk->sk_wmem_alloc); in ip_append_page()
1331 IP_INC_STATS(sock_net(sk), IPSTATS_MIB_OUTDISCARDS); in ip_append_page()
1348 struct sk_buff *__ip_make_skb(struct sock *sk, in __ip_make_skb() argument
1355 struct inet_sock *inet = inet_sk(sk); in __ip_make_skb()
1356 struct net *net = sock_net(sk); in __ip_make_skb()
1379 tmp_skb->sk = NULL; in __ip_make_skb()
1386 skb->ignore_df = ip_sk_ignore_df(sk); in __ip_make_skb()
1394 ip_dont_fragment(sk, &rt->dst))) in __ip_make_skb()
1413 iph->protocol = sk->sk_protocol; in __ip_make_skb()
1415 ip_select_ident(net, skb, sk); in __ip_make_skb()
1422 skb->priority = (cork->tos != -1) ? cork->priority: sk->sk_priority; in __ip_make_skb()
1423 skb->mark = sk->sk_mark; in __ip_make_skb()
1444 err = ip_local_out(net, skb->sk, skb); in ip_send_skb()
1455 int ip_push_pending_frames(struct sock *sk, struct flowi4 *fl4) in ip_push_pending_frames() argument
1459 skb = ip_finish_skb(sk, fl4); in ip_push_pending_frames()
1464 return ip_send_skb(sock_net(sk), skb); in ip_push_pending_frames()
1470 static void __ip_flush_pending_frames(struct sock *sk, in __ip_flush_pending_frames() argument
1482 void ip_flush_pending_frames(struct sock *sk) in ip_flush_pending_frames() argument
1484 __ip_flush_pending_frames(sk, &sk->sk_write_queue, &inet_sk(sk)->cork.base); in ip_flush_pending_frames()
1487 struct sk_buff *ip_make_skb(struct sock *sk, in ip_make_skb() argument
1507 err = ip_setup_cork(sk, &cork, ipc, rtp); in ip_make_skb()
1511 err = __ip_append_data(sk, fl4, &queue, &cork, in ip_make_skb()
1515 __ip_flush_pending_frames(sk, &queue, &cork); in ip_make_skb()
1519 return __ip_make_skb(sk, fl4, &queue, &cork); in ip_make_skb()
1539 void ip_send_unicast_reply(struct sock *sk, struct sk_buff *skb, in ip_send_unicast_reply() argument
1549 struct net *net = sock_net(sk); in ip_send_unicast_reply()
1586 inet_sk(sk)->tos = arg->tos; in ip_send_unicast_reply()
1588 sk->sk_priority = skb->priority; in ip_send_unicast_reply()
1589 sk->sk_protocol = ip_hdr(skb)->protocol; in ip_send_unicast_reply()
1590 sk->sk_bound_dev_if = arg->bound_dev_if; in ip_send_unicast_reply()
1591 sk->sk_sndbuf = sysctl_wmem_default; in ip_send_unicast_reply()
1592 err = ip_append_data(sk, &fl4, ip_reply_glue_bits, arg->iov->iov_base, in ip_send_unicast_reply()
1595 ip_flush_pending_frames(sk); in ip_send_unicast_reply()
1599 nskb = skb_peek(&sk->sk_write_queue); in ip_send_unicast_reply()
1606 ip_push_pending_frames(sk, &fl4); in ip_send_unicast_reply()