All of lore.kernel.org
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Tom Herbert <tom@herbertland.com>
Cc: <davem@davemloft.net>, <netdev@vger.kernel.org>
Subject: Re: [PATCH net-next] mpls: Move reserved label definitions
Date: Wed, 06 May 2015 16:07:09 -0500	[thread overview]
Message-ID: <87sib9fm9u.fsf@x220.int.ebiederm.org> (raw)
In-Reply-To: <1430841990-2828702-1-git-send-email-tom@herbertland.com> (Tom Herbert's message of "Tue, 5 May 2015 09:06:30 -0700")

Tom Herbert <tom@herbertland.com> writes:

> Move to include/uapi/linux/mpls.h to be externally visibile.

Quick question.

Have you looked to see if any of the BSD's provide any of these
definitions?    I believe the existing macros in this header are
used by tcpdump and are used by the bsds.

I am just thinking if there was already similar definitions in different
unices it would be polite to ensure we have the names in sync.

Eric

> Signed-off-by: Tom Herbert <tom@herbertland.com>
> ---
>  include/uapi/linux/mpls.h | 10 ++++++++++
>  net/mpls/af_mpls.c        | 18 +++++++++---------
>  net/mpls/internal.h       | 10 ----------
>  3 files changed, 19 insertions(+), 19 deletions(-)
>
> diff --git a/include/uapi/linux/mpls.h b/include/uapi/linux/mpls.h
> index bc9abfe..0fe6ea5 100644
> --- a/include/uapi/linux/mpls.h
> +++ b/include/uapi/linux/mpls.h
> @@ -31,4 +31,14 @@ struct mpls_label {
>  #define MPLS_LS_TTL_MASK        0x000000FF
>  #define MPLS_LS_TTL_SHIFT       0
>  
> +/* Reserved labels */
> +#define MPLS_LABEL_IPV4_EXPLICIT_NULL	0 /* RFC3032 */
> +#define MPLS_LABEL_ROUTER_ALERT		1 /* RFC3032 */
> +#define MPLS_LABEL_IPV6_EXPLICIT_NULL	2 /* RFC3032 */
> +#define MPLS_LABEL_IMPLICIT_NULL	3 /* RFC3032 */
> +#define MPLS_LABEL_ENTROPY_INDICATOR	7 /* RFC6790 */
> +#define MPLS_LABEL_GAL			13 /* RFC5586 */
> +#define MPLS_LABEL_OAM_ALERT		14 /* RFC3429 */
> +#define MPLS_LABEL_EXTENSION		15 /* RFC7274 */
> +
>  #endif /* _UAPI_MPLS_H */
> diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c
> index 954810c..b6eb761 100644
> --- a/net/mpls/af_mpls.c
> +++ b/net/mpls/af_mpls.c
> @@ -647,7 +647,7 @@ int nla_get_labels(const struct nlattr *nla,
>  			return -EINVAL;
>  
>  		switch (dec.label) {
> -		case LABEL_IMPLICIT_NULL:
> +		case MPLS_LABEL_IMPLICIT_NULL:
>  			/* RFC3032: This is a label that an LSR may
>  			 * assign and distribute, but which never
>  			 * actually appears in the encapsulation.
> @@ -935,7 +935,7 @@ static int resize_platform_label_table(struct net *net, size_t limit)
>  	}
>  
>  	/* In case the predefined labels need to be populated */
> -	if (limit > LABEL_IPV4_EXPLICIT_NULL) {
> +	if (limit > MPLS_LABEL_IPV4_EXPLICIT_NULL) {
>  		struct net_device *lo = net->loopback_dev;
>  		rt0 = mpls_rt_alloc(lo->addr_len);
>  		if (!rt0)
> @@ -945,7 +945,7 @@ static int resize_platform_label_table(struct net *net, size_t limit)
>  		rt0->rt_via_table = NEIGH_LINK_TABLE;
>  		memcpy(rt0->rt_via, lo->dev_addr, lo->addr_len);
>  	}
> -	if (limit > LABEL_IPV6_EXPLICIT_NULL) {
> +	if (limit > MPLS_LABEL_IPV6_EXPLICIT_NULL) {
>  		struct net_device *lo = net->loopback_dev;
>  		rt2 = mpls_rt_alloc(lo->addr_len);
>  		if (!rt2)
> @@ -973,15 +973,15 @@ static int resize_platform_label_table(struct net *net, size_t limit)
>  	memcpy(labels, old, cp_size);
>  
>  	/* If needed set the predefined labels */
> -	if ((old_limit <= LABEL_IPV6_EXPLICIT_NULL) &&
> -	    (limit > LABEL_IPV6_EXPLICIT_NULL)) {
> -		RCU_INIT_POINTER(labels[LABEL_IPV6_EXPLICIT_NULL], rt2);
> +	if ((old_limit <= MPLS_LABEL_IPV6_EXPLICIT_NULL) &&
> +	    (limit > MPLS_LABEL_IPV6_EXPLICIT_NULL)) {
> +		RCU_INIT_POINTER(labels[MPLS_LABEL_IPV6_EXPLICIT_NULL], rt2);
>  		rt2 = NULL;
>  	}
>  
> -	if ((old_limit <= LABEL_IPV4_EXPLICIT_NULL) &&
> -	    (limit > LABEL_IPV4_EXPLICIT_NULL)) {
> -		RCU_INIT_POINTER(labels[LABEL_IPV4_EXPLICIT_NULL], rt0);
> +	if ((old_limit <= MPLS_LABEL_IPV4_EXPLICIT_NULL) &&
> +	    (limit > MPLS_LABEL_IPV4_EXPLICIT_NULL)) {
> +		RCU_INIT_POINTER(labels[MPLS_LABEL_IPV4_EXPLICIT_NULL], rt0);
>  		rt0 = NULL;
>  	}
>  
> diff --git a/net/mpls/internal.h b/net/mpls/internal.h
> index 693877d..b064c34 100644
> --- a/net/mpls/internal.h
> +++ b/net/mpls/internal.h
> @@ -1,16 +1,6 @@
>  #ifndef MPLS_INTERNAL_H
>  #define MPLS_INTERNAL_H
>  
> -#define LABEL_IPV4_EXPLICIT_NULL	0 /* RFC3032 */
> -#define LABEL_ROUTER_ALERT_LABEL	1 /* RFC3032 */
> -#define LABEL_IPV6_EXPLICIT_NULL	2 /* RFC3032 */
> -#define LABEL_IMPLICIT_NULL		3 /* RFC3032 */
> -#define LABEL_ENTROPY_INDICATOR		7 /* RFC6790 */
> -#define LABEL_GAL			13 /* RFC5586 */
> -#define LABEL_OAM_ALERT			14 /* RFC3429 */
> -#define LABEL_EXTENSION			15 /* RFC7274 */
> -
> -
>  struct mpls_shim_hdr {
>  	__be32 label_stack_entry;
>  };

  parent reply	other threads:[~2015-05-06 21:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-05 16:06 [PATCH net-next] mpls: Move reserved label definitions Tom Herbert
2015-05-05 23:41 ` David Miller
2015-05-06 21:07 ` Eric W. Biederman [this message]
2015-05-06 22:16 ` Stephen Hemminger
2015-05-06 22:50   ` Eric W. Biederman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sib9fm9u.fsf@x220.int.ebiederm.org \
    --to=ebiederm@xmission.com \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    --cc=tom@herbertland.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.