diff options
Diffstat (limited to 'include/net/ipv6.h')
| -rw-r--r-- | include/net/ipv6.h | 19 | 
1 files changed, 19 insertions, 0 deletions
| diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 979bf6c13141..5af66b26ebdd 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -271,6 +271,15 @@ struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space,  extern bool ipv6_opt_accepted(const struct sock *sk, const struct sk_buff *skb); +static inline bool ipv6_accept_ra(struct inet6_dev *idev) +{ +	/* If forwarding is enabled, RA are not accepted unless the special +	 * hybrid mode (accept_ra=2) is enabled. +	 */ +	return idev->cnf.forwarding ? idev->cnf.accept_ra == 2 : +	    idev->cnf.accept_ra; +} +  #if IS_ENABLED(CONFIG_IPV6)  static inline int ip6_frag_nqueues(struct net *net)  { @@ -630,6 +639,16 @@ extern int			ipv6_skip_exthdr(const struct sk_buff *, int start,  extern bool			ipv6_ext_hdr(u8 nexthdr); +enum { +	IP6_FH_F_FRAG		= (1 << 0), +	IP6_FH_F_AUTH		= (1 << 1), +	IP6_FH_F_SKIP_RH	= (1 << 2), +}; + +/* find specified header and get offset to it */ +extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, +			 int target, unsigned short *fragoff, int *fragflg); +  extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type);  extern struct in6_addr *fl6_update_dst(struct flowi6 *fl6, |