[{"id":1775623,"web_url":"http://patchwork.ozlabs.org/comment/1775623/","msgid":"<CAJieiUhJCgrykvLNEFaABg6MXKR=FhgbK=bCZF0_QrYFaeG2tw@mail.gmail.com>","list_archive_url":null,"date":"2017-09-26T15:15:46","subject":"Re: [PATCH v2 2/2] ip_tunnel: add mpls over gre encapsulation","submitter":{"id":23500,"url":"http://patchwork.ozlabs.org/api/people/23500/","name":"Roopa Prabhu","email":"roopa@cumulusnetworks.com"},"content":"On Tue, Sep 26, 2017 at 2:22 AM, Amine Kherbouche\n<amine.kherbouche@6wind.com> wrote:\n> This commit introduces the MPLSoGRE support (RFC 4023), using ip tunnel\n> API.\n>\n> Encap:\n>   - Add a new iptunnel type mpls.\n>   - Share tx path: gre type mpls loaded from skb->protocol.\n>\n> Decap:\n>   - pull gre hdr and call mpls_forward().\n>\n> Signed-off-by: Amine Kherbouche <amine.kherbouche@6wind.com>\n> ---\n>  include/net/gre.h              |  3 +++\n>  include/uapi/linux/if_tunnel.h |  1 +\n>  net/ipv4/gre_demux.c           | 22 ++++++++++++++++++++++\n>  net/ipv4/ip_gre.c              |  9 +++++++++\n>  net/ipv6/ip6_gre.c             |  7 +++++++\n>  net/mpls/af_mpls.c             | 40 ++++++++++++++++++++++++++++++++++++++++\n>  6 files changed, 82 insertions(+)\n>\n> diff --git a/include/net/gre.h b/include/net/gre.h\n> index d25d836..88a8343 100644\n> --- a/include/net/gre.h\n> +++ b/include/net/gre.h\n> @@ -35,6 +35,9 @@ struct net_device *gretap_fb_dev_create(struct net *net, const char *name,\n>                                        u8 name_assign_type);\n>  int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,\n>                      bool *csum_err, __be16 proto, int nhs);\n> +#if IS_ENABLED(CONFIG_MPLS)\n> +int mpls_gre_rcv(struct sk_buff *skb, int gre_hdr_len);\n> +#endif\n>\n>  static inline int gre_calc_hlen(__be16 o_flags)\n>  {\n> diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h\n> index 2e52088..a2f48c0 100644\n> --- a/include/uapi/linux/if_tunnel.h\n> +++ b/include/uapi/linux/if_tunnel.h\n> @@ -84,6 +84,7 @@ enum tunnel_encap_types {\n>         TUNNEL_ENCAP_NONE,\n>         TUNNEL_ENCAP_FOU,\n>         TUNNEL_ENCAP_GUE,\n> +       TUNNEL_ENCAP_MPLS,\n>  };\n>\n>  #define TUNNEL_ENCAP_FLAG_CSUM         (1<<0)\n> diff --git a/net/ipv4/gre_demux.c b/net/ipv4/gre_demux.c\n> index b798862..a6a937e 100644\n> --- a/net/ipv4/gre_demux.c\n> +++ b/net/ipv4/gre_demux.c\n> @@ -23,6 +23,9 @@\n>  #include <linux/netdevice.h>\n>  #include <linux/if_tunnel.h>\n>  #include <linux/spinlock.h>\n> +#if IS_ENABLED(CONFIG_MPLS)\n> +#include <linux/mpls.h>\n> +#endif\n>  #include <net/protocol.h>\n>  #include <net/gre.h>\n>\n> @@ -122,6 +125,25 @@ int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,\n>  }\n>  EXPORT_SYMBOL(gre_parse_header);\n>\n> +#if IS_ENABLED(CONFIG_MPLS)\n> +int mpls_gre_rcv(struct sk_buff *skb, int gre_hdr_len)\n> +{\n> +       if (unlikely(!pskb_may_pull(skb, gre_hdr_len)))\n> +               goto drop;\n> +\n> +       /* Pop GRE hdr and reset the skb */\n> +       skb_pull(skb, gre_hdr_len);\n> +       skb_reset_network_header(skb);\n> +\n> +       mpls_forward(skb, skb->dev, NULL, NULL);\n\npls check return value\n\ncan mpls_gre_rcv be moved to af_mpls.c ?\n\n\n> +\n> +       return 0;\n> +drop:\n> +       return NET_RX_DROP;\n> +}\n> +EXPORT_SYMBOL(mpls_gre_rcv);\n> +#endif\n> +\n>  static int gre_rcv(struct sk_buff *skb)\n>  {\n>         const struct gre_protocol *proto;\n> diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c\n> index 9cee986..dd4431c 100644\n> --- a/net/ipv4/ip_gre.c\n> +++ b/net/ipv4/ip_gre.c\n> @@ -412,10 +412,19 @@ static int gre_rcv(struct sk_buff *skb)\n>                         return 0;\n>         }\n>\n> +#if IS_ENABLED(CONFIG_MPLS)\n> +       if (unlikely(tpi.proto == htons(ETH_P_MPLS_UC))) {\n> +               if (mpls_gre_rcv(skb, hdr_len))\n> +                       goto drop;\n> +               return 0;\n> +       }\n> +#endif\n> +\n>         if (ipgre_rcv(skb, &tpi, hdr_len) == PACKET_RCVD)\n>                 return 0;\n>\n>         icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);\n> +\n\nunnecessary new line..\n\n>  drop:\n>         kfree_skb(skb);\n>         return 0;\n> diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c\n> index c82d41e..e52396d 100644\n> --- a/net/ipv6/ip6_gre.c\n> +++ b/net/ipv6/ip6_gre.c\n> @@ -476,6 +476,13 @@ static int gre_rcv(struct sk_buff *skb)\n>         if (hdr_len < 0)\n>                 goto drop;\n>\n> +#if IS_ENABLED(CONFIG_MPLS)\n> +       if (unlikely(tpi.proto == htons(ETH_P_MPLS_UC))) {\n> +               if (mpls_gre_rcv(skb, hdr_len))\n> +                       goto drop;\n> +               return 0;\n> +       }\n\n+newline\n\nalso would be nice if the IS_ENABLED could be moved to around mpls_gre_rcv.\n\n\n> +#endif\n>         if (iptunnel_pull_header(skb, hdr_len, tpi.proto, false))\n>                 goto drop;\n>\n> diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c\n> index 36ea2ad..5505074 100644\n> --- a/net/mpls/af_mpls.c\n> +++ b/net/mpls/af_mpls.c\n> @@ -16,6 +16,7 @@\n>  #include <net/arp.h>\n>  #include <net/ip_fib.h>\n>  #include <net/netevent.h>\n> +#include <net/ip_tunnels.h>\n>  #include <net/netns/generic.h>\n>  #if IS_ENABLED(CONFIG_IPV6)\n>  #include <net/ipv6.h>\n> @@ -39,6 +40,40 @@ static int one = 1;\n>  static int label_limit = (1 << 20) - 1;\n>  static int ttl_max = 255;\n>\n> +size_t ipgre_mpls_encap_hlen(struct ip_tunnel_encap *e)\n> +{\n> +       return sizeof(struct mpls_shim_hdr);\n> +}\n> +\n> +int ipgre_mpls_build_header(struct sk_buff *skb, struct ip_tunnel_encap *e,\n> +                           u8 *protocol, struct flowi4 *fl4)\n> +{\n> +       return 0;\n> +}\n> +\n> +static const struct ip_tunnel_encap_ops mpls_iptun_ops = {\n> +       .encap_hlen     = ipgre_mpls_encap_hlen,\n> +       .build_header   = ipgre_mpls_build_header,\n\nThere are checks for build header before calling it in iptunnel code,\nso, any reason\nyou can't skip declaring .build_header ?\n\n\n> +};\n> +\n> +static int ipgre_tunnel_encap_add_mpls_ops(void)\n> +{\n> +       int ret = -1;\n> +\n> +#if IS_ENABLED(CONFIG_NET_IP_TUNNEL)\n> +       ret = ip_tunnel_encap_add_ops(&mpls_iptun_ops, TUNNEL_ENCAP_MPLS);\n> +#endif\n> +\n> +       return ret;\n> +}\n> +\n> +static void ipgre_tunnel_encap_del_mpls_ops(void)\n> +{\n> +#if IS_ENABLED(CONFIG_NET_IP_TUNNEL)\n> +       ip_tunnel_encap_del_ops(&mpls_iptun_ops, TUNNEL_ENCAP_MPLS);\n> +#endif\n> +}\n> +\n>  static void rtmsg_lfib(int event, u32 label, struct mpls_route *rt,\n>                        struct nlmsghdr *nlh, struct net *net, u32 portid,\n>                        unsigned int nlm_flags);\n> @@ -2486,6 +2521,10 @@ static int __init mpls_init(void)\n>                       0);\n>         rtnl_register(PF_MPLS, RTM_GETNETCONF, mpls_netconf_get_devconf,\n>                       mpls_netconf_dump_devconf, 0);\n> +       err = ipgre_tunnel_encap_add_mpls_ops();\n> +       if (err)\n> +               pr_err(\"Can't add mpls over gre tunnel ops\\n\");\n> +\n\nThis will throw an error  if CONFIG_NET_IP_TUNNEL is not enabled.\nCan you pls put the CONFIG_NET_IP_TUNNEL around\nipgre_tunnel_encap_add_mpls_ops ?\nsee CONFIG_INET checks in the rest of af_mpls as example.\nsame for del_ops\n\n\n>         err = 0;\n>  out:\n>         return err;\n> @@ -2503,6 +2542,7 @@ static void __exit mpls_exit(void)\n>         dev_remove_pack(&mpls_packet_type);\n>         unregister_netdevice_notifier(&mpls_dev_notifier);\n>         unregister_pernet_subsys(&mpls_net_ops);\n> +       ipgre_tunnel_encap_del_mpls_ops();\n>  }\n>  module_exit(mpls_exit);\n>\n> --\n> 2.1.4\n>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=cumulusnetworks.com\n\theader.i=@cumulusnetworks.com header.b=\"chUNXzgO\"; \n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y1kzq1Z39z9sxR\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 27 Sep 2017 01:15:51 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S968150AbdIZPPt (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tTue, 26 Sep 2017 11:15:49 -0400","from mail-vk0-f45.google.com ([209.85.213.45]:45140 \"EHLO\n\tmail-vk0-f45.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S965145AbdIZPPr (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Tue, 26 Sep 2017 11:15:47 -0400","by mail-vk0-f45.google.com with SMTP id w23so5557527vkw.2\n\tfor <netdev@vger.kernel.org>; Tue, 26 Sep 2017 08:15:47 -0700 (PDT)","by 10.176.73.112 with HTTP; Tue, 26 Sep 2017 08:15:46 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=cumulusnetworks.com; s=google;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=XcaJCAnUFOsheVJHpTyVM0SQ8qfH9CY15mcq8hA3f28=;\n\tb=chUNXzgOdQU8ElpfA/maUsG6cVyNtKK6Wi8Ejal7YVp4I3grB+Bq74qQF/N7koDe8z\n\tvq705hk2d0Z/1B7cEqvwQ/flwYrdVWnZSvFOh9C/pke6LNwMVmHV71BgayJzr+/b0bga\n\tM6Qk/fRrM5tsF4pu9wmsa021rVXc0VkaNTcX0=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=XcaJCAnUFOsheVJHpTyVM0SQ8qfH9CY15mcq8hA3f28=;\n\tb=SJEuL/Ar4uwMjM76GPThkpaZXmKMGARy/9SKDLXta5YN92BXOje2nEw0/Zd08doCwx\n\teE0kzIyMP5iVL0Dplz3bsqYhI1N/sTktvyoLCHSPc3r/VIvJNBbzhsDsr3qaXlAYH3Oa\n\t5B9v7V0uk7aAgbNGntRXYj7yJkfzzztc2unpuvmmLEIxoxhLe5ILJ4OoPkKXkyjzb/HF\n\tKiHCN9KhyA/YrkeLXp+6vuWgdxg8dlB3UQn5jBqedX0swxDEYaan0oE/ky+g6oe47pvS\n\tQGVRItMVyCgAfMh7DiBTN0y0i6I9GNmWKLvQTrmYil910fdpjLnp1A4PqZRsnrjmcBzY\n\t7ELA==","X-Gm-Message-State":"AHPjjUjq5Uz/mVyjOF9HiQqaUl+LMt8s0FVgGNx8xDGZAZX0DxzVI6cE\n\tP+ACof4cYRaR7L3qpOUKXJhKQWtfYRPohYbUTgilUA==","X-Google-Smtp-Source":"AOwi7QCOwIfkfDHLVssb/3F9hksiSomdPkmEUPfFjIcdQsWZ09iqRdURj2soENbJX2iVt/Wbx0PDK1bnTcvGHMchAGg=","X-Received":"by 10.31.110.2 with SMTP id j2mr8710493vkc.197.1506438946944;\n\tTue, 26 Sep 2017 08:15:46 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<c40295d24ec5207f5be695a2f888bfa840e2ef2c.1506416988.git.amine.kherbouche@6wind.com>","References":"<cover.1506416988.git.amine.kherbouche@6wind.com>\n\t<c40295d24ec5207f5be695a2f888bfa840e2ef2c.1506416988.git.amine.kherbouche@6wind.com>","From":"Roopa Prabhu <roopa@cumulusnetworks.com>","Date":"Tue, 26 Sep 2017 08:15:46 -0700","Message-ID":"<CAJieiUhJCgrykvLNEFaABg6MXKR=FhgbK=bCZF0_QrYFaeG2tw@mail.gmail.com>","Subject":"Re: [PATCH v2 2/2] ip_tunnel: add mpls over gre encapsulation","To":"Amine Kherbouche <amine.kherbouche@6wind.com>","Cc":"\"netdev@vger.kernel.org\" <netdev@vger.kernel.org>, xeb@mail.ru,\n\tDavid Lamparter <equinox@diac24.net>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1775749,"web_url":"http://patchwork.ozlabs.org/comment/1775749/","msgid":"<9f0675b0-cbda-9053-250f-19f3f837b124@6wind.com>","list_archive_url":null,"date":"2017-09-26T17:58:21","subject":"Re: [PATCH v2 2/2] ip_tunnel: add mpls over gre encapsulation","submitter":{"id":72147,"url":"http://patchwork.ozlabs.org/api/people/72147/","name":"Amine Kherbouche","email":"amine.kherbouche@6wind.com"},"content":"Hi Roopa,\n\nThanks for the feedback, I have just one question:\n\nOn 09/26/2017 05:15 PM, Roopa Prabhu wrote:\n>> +static int ipgre_tunnel_encap_add_mpls_ops(void)\n>> > +{\n>> > +       int ret = -1;\n>> > +\n>> > +#if IS_ENABLED(CONFIG_NET_IP_TUNNEL)\n>> > +       ret = ip_tunnel_encap_add_ops(&mpls_iptun_ops, TUNNEL_ENCAP_MPLS);\n>> > +#endif\n>> > +\n>> > +       return ret;\n>> > +}\n>> > +\n>> > +static void ipgre_tunnel_encap_del_mpls_ops(void)\n>> > +{\n>> > +#if IS_ENABLED(CONFIG_NET_IP_TUNNEL)\n>> > +       ip_tunnel_encap_del_ops(&mpls_iptun_ops, TUNNEL_ENCAP_MPLS);\n>> > +#endif\n>> > +}\n>> > +\n>> >  static void rtmsg_lfib(int event, u32 label, struct mpls_route *rt,\n>> >                        struct nlmsghdr *nlh, struct net *net, u32 portid,\n>> >                        unsigned int nlm_flags);\n>> > @@ -2486,6 +2521,10 @@ static int __init mpls_init(void)\n>> >                       0);\n>> >         rtnl_register(PF_MPLS, RTM_GETNETCONF, mpls_netconf_get_devconf,\n>> >                       mpls_netconf_dump_devconf, 0);\n>> > +       err = ipgre_tunnel_encap_add_mpls_ops();\n>> > +       if (err)\n>> > +               pr_err(\"Can't add mpls over gre tunnel ops\\n\");\n>> > +\n> This will throw an error  if CONFIG_NET_IP_TUNNEL is not enabled.\n> Can you pls put the CONFIG_NET_IP_TUNNEL around\n> ipgre_tunnel_encap_add_mpls_ops ?\n\nYou want the CONFIG_NET_IP_TUNNEL definition around the declaration of \nthe function or when it's called ? or both ? (I can adjust the code for \nany case).\n\n> see CONFIG_INET checks in the rest of af_mpls as example.\n> same for del_ops\n>\n\nThanks,\n\nAmine","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=6wind-com.20150623.gappssmtp.com\n\theader.i=@6wind-com.20150623.gappssmtp.com\n\theader.b=\"tOHkIy9f\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y1pbc3Z4Sz9t39\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 27 Sep 2017 03:58:36 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S968892AbdIZR6d (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tTue, 26 Sep 2017 13:58:33 -0400","from mail-wm0-f51.google.com ([74.125.82.51]:45369 \"EHLO\n\tmail-wm0-f51.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S966562AbdIZR6c (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Tue, 26 Sep 2017 13:58:32 -0400","by mail-wm0-f51.google.com with SMTP id q124so10520445wmb.0\n\tfor <netdev@vger.kernel.org>; Tue, 26 Sep 2017 10:58:31 -0700 (PDT)","from [10.16.0.135] (host.78.145.23.62.rev.coltfrance.com.\n\t[62.23.145.78]) by smtp.gmail.com with ESMTPSA id\n\td5sm2357584wma.22.2017.09.26.10.58.30\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 26 Sep 2017 10:58:30 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=6wind-com.20150623.gappssmtp.com; s=20150623;\n\th=subject:to:references:cc:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=0bcPanJ9D8WlTGTgzSHPizVHdO8ZnzWxQ4aOB46bXyw=;\n\tb=tOHkIy9fZzZ2GgvhNUJ8oraturA2YXPVESVqJ4a7s42GJRyCKW0vWfbf/VKrigGaW2\n\t2xTlXPkm0dp4xZdXuxmqJblUvi+0dGryFieg3EGVvKG4uIXQKP8Eir23iyEniydLfrL0\n\t1zv9GvMuOjwz293gktGpHCK6Y3RXAhUFXzmzFdC0NBMQGIbb+v7GzEZIokDYW1Qy86nL\n\tsrJOfTNCjzec7f/ihJnvY5YlnPE4SS6qadoNcIkvioHyqK6qn8ZaQUv6Z7SDWc0RIMfO\n\tavQE7WRaYVMKCbvl1+1ZmRiPWkqgEHmS7vRyjt3tuX4XfG6H16Je6seDPqkh7lEnzkLg\n\t0BQQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:references:cc:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=0bcPanJ9D8WlTGTgzSHPizVHdO8ZnzWxQ4aOB46bXyw=;\n\tb=EckQbNuB7rrtWMvWc3AHz87ZPZtW6bZrDVHhFIGlt18kpWamwhOqCwxMXfxzvjzxt+\n\tQ0SPINbpacX/NLbNULV16650Xt6Ydq9dMIldxq0nIWeTB9dQ1s01oWJIh/pl3u0NdwHZ\n\t6LVf31UcoiGw0g4FitxDvyiRe/lYJKUaCDFPjJNK2p+3zSUUC4oeXFVz5LJbjJ1D8Nrx\n\tPzULTjkAr9eGrSC5XRJ++36iz3oJNWC3UggOrREfHjM0A+7G/Y0AjhPkbCnoF9rQonHu\n\tZuki5ROepEmhme5BG3veFwT6ImxBReyR0+ai7Y8f3RDFmPmw2+iD2ZUeMOMOjRhwH1i1\n\tXlIQ==","X-Gm-Message-State":"AHPjjUjo7LaBp8DbtdydF57g0L5M9+2lvKQYGqk16aCH0OBQW4TzN9nN\n\tKADvzHWLHQ5FTX4OChv6LUv65g==","X-Google-Smtp-Source":"AOwi7QA7eOXjQBJ+emSdB+VUUql/YO4zSkKyivDRQGi1iHM+WfJcYNRm9uXA45gVNRkUW7eLR3Mdvw==","X-Received":"by 10.28.154.138 with SMTP id c132mr1123818wme.2.1506448711217; \n\tTue, 26 Sep 2017 10:58:31 -0700 (PDT)","Subject":"Re: [PATCH v2 2/2] ip_tunnel: add mpls over gre encapsulation","To":"Roopa Prabhu <roopa@cumulusnetworks.com>","References":"<cover.1506416988.git.amine.kherbouche@6wind.com>\n\t<c40295d24ec5207f5be695a2f888bfa840e2ef2c.1506416988.git.amine.kherbouche@6wind.com>\n\t<CAJieiUhJCgrykvLNEFaABg6MXKR=FhgbK=bCZF0_QrYFaeG2tw@mail.gmail.com>","Cc":"\"netdev@vger.kernel.org\" <netdev@vger.kernel.org>, xeb@mail.ru,\n\tDavid Lamparter <equinox@diac24.net>","From":"Amine Kherbouche <amine.kherbouche@6wind.com>","Message-ID":"<9f0675b0-cbda-9053-250f-19f3f837b124@6wind.com>","Date":"Tue, 26 Sep 2017 19:58:21 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tThunderbird/45.1.1","MIME-Version":"1.0","In-Reply-To":"<CAJieiUhJCgrykvLNEFaABg6MXKR=FhgbK=bCZF0_QrYFaeG2tw@mail.gmail.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1775810,"web_url":"http://patchwork.ozlabs.org/comment/1775810/","msgid":"<CAJieiUi2vezQjZKomJo-YWi+bd=fTgSS4YVxVcWdDyfetR5RFg@mail.gmail.com>","list_archive_url":null,"date":"2017-09-26T19:31:17","subject":"Re: [PATCH v2 2/2] ip_tunnel: add mpls over gre encapsulation","submitter":{"id":23500,"url":"http://patchwork.ozlabs.org/api/people/23500/","name":"Roopa Prabhu","email":"roopa@cumulusnetworks.com"},"content":"On Tue, Sep 26, 2017 at 10:58 AM, Amine Kherbouche\n<amine.kherbouche@6wind.com> wrote:\n> Hi Roopa,\n>\n> Thanks for the feedback, I have just one question:\n>\n>\n> On 09/26/2017 05:15 PM, Roopa Prabhu wrote:\n>>>\n>>> +static int ipgre_tunnel_encap_add_mpls_ops(void)\n>>> > +{\n>>> > +       int ret = -1;\n>>> > +\n>>> > +#if IS_ENABLED(CONFIG_NET_IP_TUNNEL)\n>>> > +       ret = ip_tunnel_encap_add_ops(&mpls_iptun_ops,\n>>> > TUNNEL_ENCAP_MPLS);\n>>> > +#endif\n>>> > +\n>>> > +       return ret;\n>>> > +}\n>>> > +\n>>> > +static void ipgre_tunnel_encap_del_mpls_ops(void)\n>>> > +{\n>>> > +#if IS_ENABLED(CONFIG_NET_IP_TUNNEL)\n>>> > +       ip_tunnel_encap_del_ops(&mpls_iptun_ops, TUNNEL_ENCAP_MPLS);\n>>> > +#endif\n>>> > +}\n>>> > +\n>>> >  static void rtmsg_lfib(int event, u32 label, struct mpls_route *rt,\n>>> >                        struct nlmsghdr *nlh, struct net *net, u32\n>>> > portid,\n>>> >                        unsigned int nlm_flags);\n>>> > @@ -2486,6 +2521,10 @@ static int __init mpls_init(void)\n>>> >                       0);\n>>> >         rtnl_register(PF_MPLS, RTM_GETNETCONF,\n>>> > mpls_netconf_get_devconf,\n>>> >                       mpls_netconf_dump_devconf, 0);\n>>> > +       err = ipgre_tunnel_encap_add_mpls_ops();\n>>> > +       if (err)\n>>> > +               pr_err(\"Can't add mpls over gre tunnel ops\\n\");\n>>> > +\n>>\n>> This will throw an error  if CONFIG_NET_IP_TUNNEL is not enabled.\n>> Can you pls put the CONFIG_NET_IP_TUNNEL around\n>> ipgre_tunnel_encap_add_mpls_ops ?\n>\n>\n> You want the CONFIG_NET_IP_TUNNEL definition around the declaration of the\n> function or when it's called ? or both ? (I can adjust the code for any\n> case).\n\naround the declaration like below....,\n\n#if IS_ENABLED(CONFIG_NET_IP_TUNNEL)\nstatic int ipgre_tunnel_encap_add_mpls_ops(void)\n{\n      return ip_tunnel_encap_add_ops(&mpls_iptun_ops,\n                                                            TUNNEL_ENCAP_MPLS);\n}\n\nstatic void ipgre_tunnel_encap_del_mpls_ops(void)\n{\n      ip_tunnel_encap_del_ops(&mpls_iptun_ops, TUNNEL_ENCAP_MPLS);\n}\n#else\nstatic int ipgre_tunnel_encap_add_mpls_ops(void)\n{\n      return 0\n}\n\nstatic void ipgre_tunnel_encap_del_mpls_ops(void)\n{\n}\n#endif\n\nthanks.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=cumulusnetworks.com\n\theader.i=@cumulusnetworks.com header.b=\"NV8NSKLz\"; \n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y1rff38mxz9t3m\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 27 Sep 2017 05:31:22 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1030366AbdIZTbU (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tTue, 26 Sep 2017 15:31:20 -0400","from mail-ua0-f173.google.com ([209.85.217.173]:45565 \"EHLO\n\tmail-ua0-f173.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1030327AbdIZTbS (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Tue, 26 Sep 2017 15:31:18 -0400","by mail-ua0-f173.google.com with SMTP id c27so7148308uah.2\n\tfor <netdev@vger.kernel.org>; Tue, 26 Sep 2017 12:31:18 -0700 (PDT)","by 10.176.73.112 with HTTP; Tue, 26 Sep 2017 12:31:17 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=cumulusnetworks.com; s=google;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=nCqr3JtEqFDasB3jQy33HlVpeJ0Pe8XX9pnmWpe2jzs=;\n\tb=NV8NSKLzejd4QSy6lCBxp0FAnKSPI3e9iK0ESeBBtaH4Wzr8axY4DLyz+NL02dJjS6\n\t+A5WCPkpZY9puEfy5ebUnSjOPi/HWlfvRznmxbyl80hoWFi8lxGj5QugPPX2ldpJ8HW7\n\txpsQxVTsccNZdlqO16slmLl/x3ZISqYJnKHnM=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=nCqr3JtEqFDasB3jQy33HlVpeJ0Pe8XX9pnmWpe2jzs=;\n\tb=cZ+/xr9TpQLAVKiR+gjdj2LNE11grTDbG113teo5iBd6/ENSyPlCVsgW4UZ4KDc9ac\n\t++kuYjxcBB3oOlgKmCU3srRzWcT7j6b+06u3n3lbHStMVjDS2FO6cETpqYb+PBmNFTVF\n\tUDt9q/IXhkoBbLjNDIfpz5eMPZeSn90UlOYeyjFLK1aDUnQ/tu9ZSQjQ3VYaK90i9oop\n\t51O7+DcML4TC39s7a9zLKaot54NIYtqjsTOtW4T3whrWDxnrYsoz/ocrqwXHs+d0FbCl\n\tZv5KHpvNjR5fspIBG8LrbyF3i0XD0fkGz4ifCj5EKGq9wlpPGxHkWzr5ljQbZdYZRXTQ\n\t+bNA==","X-Gm-Message-State":"AHPjjUiK+yZ21GHq3rVsQ6H4XQO28qlsYVPsX2dCoF6AswEthO1hzDtZ\n\tC2T1piIzeMsoBmtA3jWjFANQ5OnnURt6nLJbJkEzqk+t","X-Google-Smtp-Source":"AOwi7QDC7eVwVzE3JcSxPoAmbAybFT7ZD11K4eYEQjw7KGkH6CdEAOeHh1AAxjh/A6Wanj3W+nKSP4Qe0H7dsCQpu2M=","X-Received":"by 10.176.95.69 with SMTP id z5mr11554744uah.100.1506454277832; \n\tTue, 26 Sep 2017 12:31:17 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<9f0675b0-cbda-9053-250f-19f3f837b124@6wind.com>","References":"<cover.1506416988.git.amine.kherbouche@6wind.com>\n\t<c40295d24ec5207f5be695a2f888bfa840e2ef2c.1506416988.git.amine.kherbouche@6wind.com>\n\t<CAJieiUhJCgrykvLNEFaABg6MXKR=FhgbK=bCZF0_QrYFaeG2tw@mail.gmail.com>\n\t<9f0675b0-cbda-9053-250f-19f3f837b124@6wind.com>","From":"Roopa Prabhu <roopa@cumulusnetworks.com>","Date":"Tue, 26 Sep 2017 12:31:17 -0700","Message-ID":"<CAJieiUi2vezQjZKomJo-YWi+bd=fTgSS4YVxVcWdDyfetR5RFg@mail.gmail.com>","Subject":"Re: [PATCH v2 2/2] ip_tunnel: add mpls over gre encapsulation","To":"Amine Kherbouche <amine.kherbouche@6wind.com>","Cc":"\"netdev@vger.kernel.org\" <netdev@vger.kernel.org>, xeb@mail.ru,\n\tDavid Lamparter <equinox@diac24.net>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1776606,"web_url":"http://patchwork.ozlabs.org/comment/1776606/","msgid":"<201709280444.hpKwxZBf%fengguang.wu@intel.com>","list_archive_url":null,"date":"2017-09-27T20:45:27","subject":"Re: [PATCH v2 2/2] ip_tunnel: add mpls over gre encapsulation","submitter":{"id":67315,"url":"http://patchwork.ozlabs.org/api/people/67315/","name":"kernel test robot","email":"lkp@intel.com"},"content":"Hi Amine,\n\n[auto build test ERROR on net/master]\n[also build test ERROR on v4.14-rc2 next-20170927]\n[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]\n\nurl:    https://github.com/0day-ci/linux/commits/Amine-Kherbouche/mpls-expose-stack-entry-function/20170928-012842\nconfig: x86_64-rhel (attached as .config)\ncompiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901\nreproduce:\n        # save the attached .config to linux build tree\n        make ARCH=x86_64 \n\nAll errors (new ones prefixed by >>):\n\n>> ERROR: \"mpls_forward\" [net/ipv4/gre.ko] undefined!\n\n---\n0-DAY kernel test infrastructure                Open Source Technology Center\nhttps://lists.01.org/pipermail/kbuild-all                   Intel Corporation","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y2VGx3gjcz9t66\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu, 28 Sep 2017 06:46:33 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751852AbdI0Uqa (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tWed, 27 Sep 2017 16:46:30 -0400","from mga01.intel.com ([192.55.52.88]:51427 \"EHLO mga01.intel.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1751692AbdI0Uqa (ORCPT <rfc822;netdev@vger.kernel.org>);\n\tWed, 27 Sep 2017 16:46:30 -0400","from orsmga005.jf.intel.com ([10.7.209.41])\n\tby fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t27 Sep 2017 13:46:29 -0700","from bee.sh.intel.com (HELO bee) ([10.239.97.14])\n\tby orsmga005.jf.intel.com with ESMTP; 27 Sep 2017 13:46:26 -0700","from kbuild by bee with local (Exim 4.84_2)\n\t(envelope-from <fengguang.wu@intel.com>)\n\tid 1dxJIz-000STN-Q6; Thu, 28 Sep 2017 04:51:41 +0800"],"X-ExtLoop1":"1","X-IronPort-AV":"E=Sophos;i=\"5.42,446,1500966000\"; \n\td=\"gz'50?scan'50,208,50\";a=\"154115628\"","Date":"Thu, 28 Sep 2017 04:45:27 +0800","From":"kbuild test robot <lkp@intel.com>","To":"Amine Kherbouche <amine.kherbouche@6wind.com>","Cc":"kbuild-all@01.org, netdev@vger.kernel.org, xeb@mail.ru,\n\troopa@cumulusnetworks.com, amine.kherbouche@6wind.com, equinox@diac24.net","Subject":"Re: [PATCH v2 2/2] ip_tunnel: add mpls over gre encapsulation","Message-ID":"<201709280444.hpKwxZBf%fengguang.wu@intel.com>","MIME-Version":"1.0","Content-Type":"multipart/mixed; boundary=\"bg08WKrSYDhXBjb5\"","Content-Disposition":"inline","In-Reply-To":"<c40295d24ec5207f5be695a2f888bfa840e2ef2c.1506416988.git.amine.kherbouche@6wind.com>","User-Agent":"Mutt/1.5.23 (2014-03-12)","X-SA-Exim-Connect-IP":"<locally generated>","X-SA-Exim-Mail-From":"fengguang.wu@intel.com","X-SA-Exim-Scanned":"No (on bee); SAEximRunCond expanded to false","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}}]