Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mpls: export mpls functions for use by mpls iptunnels

Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Roopa Prabhu and committed by
David S. Miller
face0188 74a0f2fe

+15 -5
+8 -3
net/mpls/af_mpls.c
··· 58 58 return rcu_dereference_rtnl(dev->mpls_ptr); 59 59 } 60 60 61 - static bool mpls_output_possible(const struct net_device *dev) 61 + bool mpls_output_possible(const struct net_device *dev) 62 62 { 63 63 return dev && (dev->flags & IFF_UP) && netif_carrier_ok(dev); 64 64 } 65 + EXPORT_SYMBOL_GPL(mpls_output_possible); 65 66 66 67 static unsigned int mpls_rt_header_size(const struct mpls_route *rt) 67 68 { ··· 70 69 return rt->rt_labels * sizeof(struct mpls_shim_hdr); 71 70 } 72 71 73 - static unsigned int mpls_dev_mtu(const struct net_device *dev) 72 + unsigned int mpls_dev_mtu(const struct net_device *dev) 74 73 { 75 74 /* The amount of data the layer 2 frame can hold */ 76 75 return dev->mtu; 77 76 } 77 + EXPORT_SYMBOL_GPL(mpls_dev_mtu); 78 78 79 - static bool mpls_pkt_too_big(const struct sk_buff *skb, unsigned int mtu) 79 + bool mpls_pkt_too_big(const struct sk_buff *skb, unsigned int mtu) 80 80 { 81 81 if (skb->len <= mtu) 82 82 return false; ··· 87 85 88 86 return true; 89 87 } 88 + EXPORT_SYMBOL_GPL(mpls_pkt_too_big); 90 89 91 90 static bool mpls_egress(struct mpls_route *rt, struct sk_buff *skb, 92 91 struct mpls_entry_decoded dec) ··· 629 626 630 627 return 0; 631 628 } 629 + EXPORT_SYMBOL_GPL(nla_put_labels); 632 630 633 631 int nla_get_labels(const struct nlattr *nla, 634 632 u32 max_labels, u32 *labels, u32 label[]) ··· 675 671 *labels = nla_labels; 676 672 return 0; 677 673 } 674 + EXPORT_SYMBOL_GPL(nla_get_labels); 678 675 679 676 static int rtm_to_route_config(struct sk_buff *skb, struct nlmsghdr *nlh, 680 677 struct mpls_route_config *cfg)
+7 -2
net/mpls/internal.h
··· 50 50 return result; 51 51 } 52 52 53 - int nla_put_labels(struct sk_buff *skb, int attrtype, u8 labels, const u32 label[]); 54 - int nla_get_labels(const struct nlattr *nla, u32 max_labels, u32 *labels, u32 label[]); 53 + int nla_put_labels(struct sk_buff *skb, int attrtype, u8 labels, 54 + const u32 label[]); 55 + int nla_get_labels(const struct nlattr *nla, u32 max_labels, u32 *labels, 56 + u32 label[]); 57 + bool mpls_output_possible(const struct net_device *dev); 58 + unsigned int mpls_dev_mtu(const struct net_device *dev); 59 + bool mpls_pkt_too_big(const struct sk_buff *skb, unsigned int mtu); 55 60 56 61 #endif /* MPLS_INTERNAL_H */