ip6_output.c (7f36f5d11cda050b118f76d774151427a18d15ef) ip6_output.c (2b89ed65a6f201a6a4f0450ad289aa4bf491608c)
1/*
2 * IPv6 output functions
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
7 *
8 * Based on linux/net/ipv4/ip_output.c

--- 1330 unchanged lines hidden (view full) ---

1339 return -EMSGSIZE;
1340 }
1341
1342 /* CHECKSUM_PARTIAL only with no extension headers and when
1343 * we are not going to fragment
1344 */
1345 if (transhdrlen && sk->sk_protocol == IPPROTO_UDP &&
1346 headersize == sizeof(struct ipv6hdr) &&
1/*
2 * IPv6 output functions
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
7 *
8 * Based on linux/net/ipv4/ip_output.c

--- 1330 unchanged lines hidden (view full) ---

1339 return -EMSGSIZE;
1340 }
1341
1342 /* CHECKSUM_PARTIAL only with no extension headers and when
1343 * we are not going to fragment
1344 */
1345 if (transhdrlen && sk->sk_protocol == IPPROTO_UDP &&
1346 headersize == sizeof(struct ipv6hdr) &&
1347 length < mtu - headersize &&
1347 length <= mtu - headersize &&
1348 !(flags & MSG_MORE) &&
1349 rt->dst.dev->features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM))
1350 csummode = CHECKSUM_PARTIAL;
1351
1352 if (sk->sk_type == SOCK_DGRAM || sk->sk_type == SOCK_RAW) {
1353 sock_tx_timestamp(sk, sockc->tsflags, &tx_flags);
1354 if (tx_flags & SKBTX_ANY_SW_TSTAMP &&
1355 sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)

--- 455 unchanged lines hidden ---
1348 !(flags & MSG_MORE) &&
1349 rt->dst.dev->features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM))
1350 csummode = CHECKSUM_PARTIAL;
1351
1352 if (sk->sk_type == SOCK_DGRAM || sk->sk_type == SOCK_RAW) {
1353 sock_tx_timestamp(sk, sockc->tsflags, &tx_flags);
1354 if (tx_flags & SKBTX_ANY_SW_TSTAMP &&
1355 sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)

--- 455 unchanged lines hidden ---