Lines Matching defs:cork

952 			    struct inet_cork *cork,
962 struct ip_options *opt = cork->opt;
972 struct rtable *rt = (struct rtable *)cork->dst;
980 mtu = cork->gso_size ? IP_MAX_MTU : cork->fragsize;
981 paged = !!cork->gso_size;
983 if (cork->tx_flags & SKBTX_ANY_TSTAMP &&
993 if (cork->length + length > maxnonfragsize - fragheaderlen) {
1006 (!(flags & MSG_MORE) || cork->gso_size) &&
1051 cork->length += length;
1178 skb_shinfo(skb)->tx_flags = cork->tx_flags;
1179 cork->tx_flags = 0;
1272 cork->length -= length;
1278 static int ip_setup_cork(struct sock *sk, struct inet_cork *cork,
1288 cork->fragsize = ip_sk_use_pmtu(sk) ?
1291 if (!inetdev_valid_mtu(cork->fragsize))
1299 if (!cork->opt) {
1300 cork->opt = kmalloc(sizeof(struct ip_options) + 40,
1302 if (unlikely(!cork->opt))
1305 memcpy(cork->opt, &opt->opt, sizeof(struct ip_options) + opt->opt.optlen);
1306 cork->flags |= IPCORK_OPT;
1307 cork->addr = ipc->addr;
1310 cork->gso_size = ipc->gso_size;
1312 cork->dst = &rt->dst;
1316 cork->length = 0;
1317 cork->ttl = ipc->ttl;
1318 cork->tos = ipc->tos;
1319 cork->mark = ipc->sockc.mark;
1320 cork->priority = ipc->priority;
1321 cork->transmit_time = ipc->sockc.transmit_time;
1322 cork->tx_flags = 0;
1323 sock_tx_timestamp(sk, ipc->sockc.tsflags, &cork->tx_flags);
1353 err = ip_setup_cork(sk, &inet->cork.base, ipc, rtp);
1360 return __ip_append_data(sk, fl4, &sk->sk_write_queue, &inet->cork.base,
1365 static void ip_cork_release(struct inet_cork *cork)
1367 cork->flags &= ~IPCORK_OPT;
1368 kfree(cork->opt);
1369 cork->opt = NULL;
1370 dst_release(cork->dst);
1371 cork->dst = NULL;
1381 struct inet_cork *cork)
1388 struct rtable *rt = (struct rtable *)cork->dst;
1427 if (cork->flags & IPCORK_OPT)
1428 opt = cork->opt;
1430 if (cork->ttl != 0)
1431 ttl = cork->ttl;
1440 iph->tos = (cork->tos != -1) ? cork->tos : inet->tos;
1449 ip_options_build(skb, opt, cork->addr, rt);
1452 skb->priority = (cork->tos != -1) ? cork->priority: sk->sk_priority;
1453 skb->mark = cork->mark;
1454 skb->tstamp = cork->transmit_time;
1456 * Steal rt from cork.dst to avoid a pair of atomic_inc/atomic_dec
1459 cork->dst = NULL;
1477 ip_cork_release(cork);
1514 struct inet_cork *cork)
1521 ip_cork_release(cork);
1526 __ip_flush_pending_frames(sk, &sk->sk_write_queue, &inet_sk(sk)->cork.base);
1535 struct inet_cork *cork, unsigned int flags)
1545 cork->flags = 0;
1546 cork->addr = 0;
1547 cork->opt = NULL;
1548 err = ip_setup_cork(sk, cork, ipc, rtp);
1552 err = __ip_append_data(sk, fl4, &queue, cork,
1556 __ip_flush_pending_frames(sk, &queue, cork);
1560 return __ip_make_skb(sk, fl4, &queue, cork);