mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
ipv6: sr: export SRH insertion functions
This patch exports the seg6_do_srh_encap() and seg6_do_srh_inline() functions. It also removes the CONFIG_IPV6_SEG6_INLINE knob that enabled the compilation of seg6_do_srh_inline(). This function is now built-in. Signed-off-by: David Lebrun <david.lebrun@uclouvain.be> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
925615ceda
commit
b04c80d3a7
@ -58,5 +58,7 @@ extern int seg6_iptunnel_init(void);
|
||||
extern void seg6_iptunnel_exit(void);
|
||||
|
||||
extern bool seg6_validate_srh(struct ipv6_sr_hdr *srh, int len);
|
||||
extern int seg6_do_srh_encap(struct sk_buff *skb, struct ipv6_sr_hdr *osrh);
|
||||
extern int seg6_do_srh_inline(struct sk_buff *skb, struct ipv6_sr_hdr *osrh);
|
||||
|
||||
#endif
|
||||
|
@ -315,18 +315,6 @@ config IPV6_SEG6_LWTUNNEL
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config IPV6_SEG6_INLINE
|
||||
bool "IPv6: direct Segment Routing Header insertion "
|
||||
depends on IPV6_SEG6_LWTUNNEL
|
||||
---help---
|
||||
Support for direct insertion of the Segment Routing Header,
|
||||
also known as inline mode. Be aware that direct insertion of
|
||||
extension headers (as opposed to encapsulation) may break
|
||||
multiple mechanisms such as PMTUD or IPSec AH. Use this feature
|
||||
only if you know exactly what you are doing.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config IPV6_SEG6_HMAC
|
||||
bool "IPv6: Segment Routing HMAC support"
|
||||
depends on IPV6
|
||||
|
@ -91,7 +91,7 @@ static void set_tun_src(struct net *net, struct net_device *dev,
|
||||
}
|
||||
|
||||
/* encapsulate an IPv6 packet within an outer IPv6 header with a given SRH */
|
||||
static int seg6_do_srh_encap(struct sk_buff *skb, struct ipv6_sr_hdr *osrh)
|
||||
int seg6_do_srh_encap(struct sk_buff *skb, struct ipv6_sr_hdr *osrh)
|
||||
{
|
||||
struct net *net = dev_net(skb_dst(skb)->dev);
|
||||
struct ipv6hdr *hdr, *inner_hdr;
|
||||
@ -141,10 +141,10 @@ static int seg6_do_srh_encap(struct sk_buff *skb, struct ipv6_sr_hdr *osrh)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(seg6_do_srh_encap);
|
||||
|
||||
/* insert an SRH within an IPv6 packet, just after the IPv6 header */
|
||||
#ifdef CONFIG_IPV6_SEG6_INLINE
|
||||
static int seg6_do_srh_inline(struct sk_buff *skb, struct ipv6_sr_hdr *osrh)
|
||||
int seg6_do_srh_inline(struct sk_buff *skb, struct ipv6_sr_hdr *osrh)
|
||||
{
|
||||
struct ipv6hdr *hdr, *oldhdr;
|
||||
struct ipv6_sr_hdr *isrh;
|
||||
@ -193,7 +193,7 @@ static int seg6_do_srh_inline(struct sk_buff *skb, struct ipv6_sr_hdr *osrh)
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
EXPORT_SYMBOL_GPL(seg6_do_srh_inline);
|
||||
|
||||
static int seg6_do_srh(struct sk_buff *skb)
|
||||
{
|
||||
@ -209,12 +209,10 @@ static int seg6_do_srh(struct sk_buff *skb)
|
||||
}
|
||||
|
||||
switch (tinfo->mode) {
|
||||
#ifdef CONFIG_IPV6_SEG6_INLINE
|
||||
case SEG6_IPTUN_MODE_INLINE:
|
||||
err = seg6_do_srh_inline(skb, tinfo->srh);
|
||||
skb_reset_inner_headers(skb);
|
||||
break;
|
||||
#endif
|
||||
case SEG6_IPTUN_MODE_ENCAP:
|
||||
err = seg6_do_srh_encap(skb, tinfo->srh);
|
||||
break;
|
||||
@ -357,10 +355,8 @@ static int seg6_build_state(struct nlattr *nla,
|
||||
return -EINVAL;
|
||||
|
||||
switch (tuninfo->mode) {
|
||||
#ifdef CONFIG_IPV6_SEG6_INLINE
|
||||
case SEG6_IPTUN_MODE_INLINE:
|
||||
break;
|
||||
#endif
|
||||
case SEG6_IPTUN_MODE_ENCAP:
|
||||
break;
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user