Skip to content

Commit

Permalink
route: merge branch 'qbdwlr:mplsPR'
Browse files Browse the repository at this point in the history
Upstream SONiC MPLS changes to libnl3.

#284
  • Loading branch information
thom311 committed Mar 4, 2022
2 parents 0688bc6 + cc680d4 commit 431ba83
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 13 deletions.
2 changes: 2 additions & 0 deletions include/netlink/route/nexthop.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ extern int rtnl_route_nh_str2flags(const char *);
extern int rtnl_route_nh_encap_mpls(struct rtnl_nexthop *nh,
struct nl_addr *addr,
uint8_t ttl);
extern struct nl_addr * rtnl_route_nh_get_encap_mpls_dst(struct rtnl_nexthop *);
extern uint8_t rtnl_route_nh_get_encap_mpls_ttl(struct rtnl_nexthop *);
#ifdef __cplusplus
}
#endif
Expand Down
8 changes: 0 additions & 8 deletions lib/route/nexthop.c
Original file line number Diff line number Diff line change
Expand Up @@ -344,10 +344,6 @@ int rtnl_route_nh_set_newdst(struct rtnl_nexthop *nh, struct nl_addr *addr)
{
struct nl_addr *old = nh->rtnh_newdst;

if (!nl_addr_valid(nl_addr_get_binary_addr(addr),
nl_addr_get_len(addr)))
return -NLE_INVAL;

if (addr) {
nh->rtnh_newdst = nl_addr_get(addr);
nh->ce_mask |= NH_ATTR_NEWDST;
Expand All @@ -371,10 +367,6 @@ int rtnl_route_nh_set_via(struct rtnl_nexthop *nh, struct nl_addr *addr)
{
struct nl_addr *old = nh->rtnh_via;

if (!nl_addr_valid(nl_addr_get_binary_addr(addr),
nl_addr_get_len(addr)))
return -NLE_INVAL;

if (addr) {
nh->rtnh_via = nl_addr_get(addr);
nh->ce_mask |= NH_ATTR_VIA;
Expand Down
32 changes: 28 additions & 4 deletions lib/route/nh_encap_mpls.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,6 @@ int rtnl_route_nh_encap_mpls(struct rtnl_nexthop *nh,
if (!addr)
return -NLE_INVAL;

if (!nl_addr_valid(nl_addr_get_binary_addr(addr),
nl_addr_get_len(addr)))
return -NLE_INVAL;

rtnh_encap = calloc(1, sizeof(*rtnh_encap));
if (!rtnh_encap)
return -NLE_NOMEM;
Expand All @@ -132,3 +128,31 @@ int rtnl_route_nh_encap_mpls(struct rtnl_nexthop *nh,

return 0;
}

struct nl_addr *rtnl_route_nh_get_encap_mpls_dst(struct rtnl_nexthop *nh)
{
struct mpls_iptunnel_encap *mpls_encap;

if (!nh->rtnh_encap || nh->rtnh_encap->ops->encap_type != LWTUNNEL_ENCAP_MPLS)
return NULL;

mpls_encap = (struct mpls_iptunnel_encap *)nh->rtnh_encap->priv;
if (!mpls_encap)
return NULL;

return mpls_encap->dst;
}

uint8_t rtnl_route_nh_get_encap_mpls_ttl(struct rtnl_nexthop *nh)
{
struct mpls_iptunnel_encap *mpls_encap;

if (!nh->rtnh_encap || nh->rtnh_encap->ops->encap_type != LWTUNNEL_ENCAP_MPLS)
return 0;

mpls_encap = (struct mpls_iptunnel_encap *)nh->rtnh_encap->priv;
if (!mpls_encap)
return 0;

return mpls_encap->ttl;
}
4 changes: 3 additions & 1 deletion libnl-route-3.sym
Original file line number Diff line number Diff line change
Expand Up @@ -1152,6 +1152,8 @@ global:
} libnl_3_4;

libnl_3_6 {
rtnl_link_macsec_set_offload;
rtnl_link_macsec_get_offload;
rtnl_link_macsec_set_offload;
rtnl_route_nh_get_encap_mpls_dst;
rtnl_route_nh_get_encap_mpls_ttl;
} libnl_3_5;

0 comments on commit 431ba83

Please sign in to comment.