diff options
author | Brian Haley <brian.haley@hp.com> | 2010-04-23 07:26:09 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-24 02:35:29 -0400 |
commit | 4b340ae20d0e2366792abe70f46629e576adaf5e (patch) | |
tree | b0c413a0348e722fbc23d45508224076b6e60f92 /include | |
parent | 13b52cd44670e3359055e9918d0e766d89836425 (diff) |
IPv6: Complete IPV6_DONTFRAG support
Finally add support to detect a local IPV6_DONTFRAG event
and return the relevant data to the user if they've enabled
IPV6_RECVPATHMTU on the socket. The next recvmsg() will
return no data, but have an IPV6_PATHMTU as ancillary data.
Signed-off-by: Brian Haley <brian.haley@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ipv6.h | 2 | ||||
-rw-r--r-- | include/net/ipv6.h | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 1976942cf6f9..2ab5509f6d49 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -257,6 +257,7 @@ struct inet6_skb_parm { | |||
257 | }; | 257 | }; |
258 | 258 | ||
259 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) | 259 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) |
260 | #define IP6CBMTU(skb) ((struct ip6_mtuinfo *)((skb)->cb)) | ||
260 | 261 | ||
261 | static inline int inet6_iif(const struct sk_buff *skb) | 262 | static inline int inet6_iif(const struct sk_buff *skb) |
262 | { | 263 | { |
@@ -366,6 +367,7 @@ struct ipv6_pinfo { | |||
366 | 367 | ||
367 | struct ipv6_txoptions *opt; | 368 | struct ipv6_txoptions *opt; |
368 | struct sk_buff *pktoptions; | 369 | struct sk_buff *pktoptions; |
370 | struct sk_buff *rxpmtu; | ||
369 | struct { | 371 | struct { |
370 | struct ipv6_txoptions *opt; | 372 | struct ipv6_txoptions *opt; |
371 | u8 hop_limit; | 373 | u8 hop_limit; |
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 7ab6323e631e..eba5cc00325a 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h | |||
@@ -578,9 +578,11 @@ extern int ip6_datagram_connect(struct sock *sk, | |||
578 | struct sockaddr *addr, int addr_len); | 578 | struct sockaddr *addr, int addr_len); |
579 | 579 | ||
580 | extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len); | 580 | extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len); |
581 | extern int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len); | ||
581 | extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 port, | 582 | extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 port, |
582 | u32 info, u8 *payload); | 583 | u32 info, u8 *payload); |
583 | extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info); | 584 | extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info); |
585 | extern void ipv6_local_rxpmtu(struct sock *sk, struct flowi *fl, u32 mtu); | ||
584 | 586 | ||
585 | extern int inet6_release(struct socket *sock); | 587 | extern int inet6_release(struct socket *sock); |
586 | extern int inet6_bind(struct socket *sock, struct sockaddr *uaddr, | 588 | extern int inet6_bind(struct socket *sock, struct sockaddr *uaddr, |