From: Roopa Prabhu <ro...@cumulusnetworks.com> This patch fixes incorrect -EINVAL error due to invalid scope and type for mpls route deletes.
iproute2 route modify code does not set protocol/scope/type for RTM_DELROUTE msgs. mpls code can skip checking for these too. $ip -f mpls route add 100 as 200 via inet 10.1.1.2 dev swp1 $ip -f mpls route show 100 as to 200 via inet 10.1.1.2 dev swp1 $ip -f mpls route del 100 as 200 via inet 10.1.1.2 dev swp1 RTNETLINK answers: Invalid argument $ip -f mpls route del 100 RTNETLINK answers: Invalid argument After patch: $ip -f mpls route show 100 as to 200 via inet 10.1.1.2 dev swp1 $ip -f mpls route del 100 as 200 via inet 10.1.1.2 dev swp1 $ip -f mpls route show Reported-by: Vivek Venkataraman <vi...@cumulusnetworks.com> Suggested-by: Vivek Venkataraman <vi...@cumulusnetworks.com> Signed-off-by: Vivek Venkataraman <vi...@cumulusnetworks.com> Signed-off-by: Roopa Prabhu <ro...@cumulusnetworks.com> --- net/mpls/af_mpls.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c index 7b3f732..18ab7bf 100644 --- a/net/mpls/af_mpls.c +++ b/net/mpls/af_mpls.c @@ -693,10 +693,13 @@ static int rtm_to_route_config(struct sk_buff *skb, struct nlmsghdr *nlh, * (or source specific address in the case of multicast) * all addresses have universal scope. */ - if (rtm->rtm_scope != RT_SCOPE_UNIVERSE) - goto errout; - if (rtm->rtm_type != RTN_UNICAST) - goto errout; + if (nlh->nlmsg_type != RTM_DELROUTE) { + if (rtm->rtm_scope != RT_SCOPE_UNIVERSE) + goto errout; + if (rtm->rtm_type != RTN_UNICAST) + goto errout; + } + if (rtm->rtm_flags != 0) goto errout; -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html