aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBrian Haley <brian.haley@hp.com>2010-04-23 07:26:09 -0400
committerDavid S. Miller <davem@davemloft.net>2010-04-24 02:35:29 -0400
commit4b340ae20d0e2366792abe70f46629e576adaf5e (patch)
treeb0c413a0348e722fbc23d45508224076b6e60f92 /include
parent13b52cd44670e3359055e9918d0e766d89836425 (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.h2
-rw-r--r--include/net/ipv6.h2
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
261static inline int inet6_iif(const struct sk_buff *skb) 262static 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
580extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len); 580extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len);
581extern int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len);
581extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 port, 582extern 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);
583extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info); 584extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info);
585extern void ipv6_local_rxpmtu(struct sock *sk, struct flowi *fl, u32 mtu);
584 586
585extern int inet6_release(struct socket *sock); 587extern int inet6_release(struct socket *sock);
586extern int inet6_bind(struct socket *sock, struct sockaddr *uaddr, 588extern int inet6_bind(struct socket *sock, struct sockaddr *uaddr,