diff options
Diffstat (limited to 'lib/mpls.h')
| -rw-r--r-- | lib/mpls.h | 134 | 
1 files changed, 64 insertions, 70 deletions
diff --git a/lib/mpls.h b/lib/mpls.h index 13a46e1012..7fee811074 100644 --- a/lib/mpls.h +++ b/lib/mpls.h @@ -41,11 +41,12 @@  #define MPLS_MIN_UNRESERVED_LABEL          16  #define MPLS_MAX_UNRESERVED_LABEL          1048575 -#define IS_MPLS_RESERVED_LABEL(label) \ -        (label >= MPLS_MIN_RESERVED_LABEL && label <= MPLS_MAX_RESERVED_LABEL) +#define IS_MPLS_RESERVED_LABEL(label)                                          \ +	(label >= MPLS_MIN_RESERVED_LABEL && label <= MPLS_MAX_RESERVED_LABEL) -#define IS_MPLS_UNRESERVED_LABEL(label) \ -        (label >= MPLS_MIN_UNRESERVED_LABEL && label <= MPLS_MAX_UNRESERVED_LABEL) +#define IS_MPLS_UNRESERVED_LABEL(label)                                        \ +	(label >= MPLS_MIN_UNRESERVED_LABEL                                    \ +	 && label <= MPLS_MAX_UNRESERVED_LABEL)  /* Definitions for a MPLS label stack entry (RFC 3032). This encodes the   * label, EXP, BOS and TTL fields. @@ -61,14 +62,11 @@ typedef unsigned int mpls_lse_t;  #define MPLS_LS_TTL_MASK               0x000000FF  #define MPLS_LS_TTL_SHIFT              0 -#define MPLS_LABEL_VALUE(lse) \ -        ((lse & MPLS_LS_LABEL_MASK) >> MPLS_LS_LABEL_SHIFT) -#define MPLS_LABEL_EXP(lse) \ -        ((lse & MPLS_LS_EXP_MASK) >> MPLS_LS_EXP_SHIFT) -#define MPLS_LABEL_BOS(lse) \ -        ((lse & MPLS_LS_S_MASK) >> MPLS_LS_S_SHIFT) -#define MPLS_LABEL_TTL(lse) \ -        ((lse & MPLS_LS_TTL_MASK) >> MPLS_LS_TTL_SHIFT) +#define MPLS_LABEL_VALUE(lse)                                                  \ +	((lse & MPLS_LS_LABEL_MASK) >> MPLS_LS_LABEL_SHIFT) +#define MPLS_LABEL_EXP(lse) ((lse & MPLS_LS_EXP_MASK) >> MPLS_LS_EXP_SHIFT) +#define MPLS_LABEL_BOS(lse) ((lse & MPLS_LS_S_MASK) >> MPLS_LS_S_SHIFT) +#define MPLS_LABEL_TTL(lse) ((lse & MPLS_LS_TTL_MASK) >> MPLS_LS_TTL_SHIFT)  #define IS_MPLS_LABEL_BOS(ls)          (MPLS_LABEL_BOS(ls) == 1) @@ -81,11 +79,10 @@ typedef unsigned int mpls_label_t;  #define MPLS_INVALID_LABEL                 0xFFFFFFFF  /* LSP types. */ -enum lsp_types_t -{ -  ZEBRA_LSP_NONE = 0,        /* No LSP. */ -  ZEBRA_LSP_STATIC = 1,      /* Static LSP. */ -  ZEBRA_LSP_LDP = 2          /* LDP LSP. */ +enum lsp_types_t { +	ZEBRA_LSP_NONE = 0,   /* No LSP. */ +	ZEBRA_LSP_STATIC = 1, /* Static LSP. */ +	ZEBRA_LSP_LDP = 2     /* LDP LSP. */  };  /* Functions for basic label operations. */ @@ -93,72 +90,69 @@ enum lsp_types_t  /* Encode a label stack entry from fields; convert to network byte-order as   * the Netlink interface expects MPLS labels to be in this format.   */ -static inline mpls_lse_t -mpls_lse_encode (mpls_label_t label, u_int32_t ttl, -                 u_int32_t exp, u_int32_t bos) +static inline mpls_lse_t mpls_lse_encode(mpls_label_t label, u_int32_t ttl, +					 u_int32_t exp, u_int32_t bos)  { -  mpls_lse_t lse; -  lse = htonl ((label << MPLS_LS_LABEL_SHIFT) | -               (exp << MPLS_LS_EXP_SHIFT) | -               (bos ? (1 << MPLS_LS_S_SHIFT) : 0) | -               (ttl << MPLS_LS_TTL_SHIFT)); -  return lse; +	mpls_lse_t lse; +	lse = htonl((label << MPLS_LS_LABEL_SHIFT) | (exp << MPLS_LS_EXP_SHIFT) +		    | (bos ? (1 << MPLS_LS_S_SHIFT) : 0) +		    | (ttl << MPLS_LS_TTL_SHIFT)); +	return lse;  }  /* Extract the fields from a label stack entry after converting to host-byte   * order. This is expected to be called only for messages received over the   * Netlink interface.   */ -static inline void -mpls_lse_decode (mpls_lse_t lse, mpls_label_t *label, -                 u_int32_t *ttl, u_int32_t *exp, u_int32_t *bos) +static inline void mpls_lse_decode(mpls_lse_t lse, mpls_label_t *label, +				   u_int32_t *ttl, u_int32_t *exp, +				   u_int32_t *bos)  { -  mpls_lse_t local_lse; +	mpls_lse_t local_lse; -  local_lse = ntohl (lse); -  *label = MPLS_LABEL_VALUE(local_lse); -  *exp = MPLS_LABEL_EXP(local_lse); -  *bos = MPLS_LABEL_BOS(local_lse); -  *ttl = MPLS_LABEL_TTL(local_lse); +	local_lse = ntohl(lse); +	*label = MPLS_LABEL_VALUE(local_lse); +	*exp = MPLS_LABEL_EXP(local_lse); +	*bos = MPLS_LABEL_BOS(local_lse); +	*ttl = MPLS_LABEL_TTL(local_lse);  }  /* Printable string for labels (with consideration for reserved values). */ -static inline char * -label2str (mpls_label_t label, char *buf, size_t len) +static inline char *label2str(mpls_label_t label, char *buf, size_t len)  { -  switch(label) { -  case MPLS_V4_EXP_NULL_LABEL: -    strlcpy(buf, "IPv4 Explicit Null", len); -    return(buf); -  case MPLS_RA_LABEL: -    strlcpy(buf, "Router Alert", len); -    return(buf); -  case MPLS_V6_EXP_NULL_LABEL: -    strlcpy(buf, "IPv6 Explict Null", len); -    return(buf); -  case MPLS_IMP_NULL_LABEL: -    strlcpy(buf, "implicit-null", len); -    return(buf); -  case MPLS_ENTROPY_LABEL_INDICATOR: -    strlcpy(buf, "Entropy Label Indicator", len); -    return(buf); -  case MPLS_GAL_LABEL: -    strlcpy(buf, "Generic Associated Channel", len); -    return(buf); -  case MPLS_OAM_ALERT_LABEL: -    strlcpy(buf, "OAM Alert", len); -    return(buf); -  case MPLS_EXTENSION_LABEL: -    strlcpy(buf, "Extension", len); -    return(buf); -  default: -    if (label < 16) -      snprintf(buf, len, "Reserved (%u)", label); -    else -      snprintf(buf, len, "%u", label); -    return(buf); -  } +	switch (label) { +	case MPLS_V4_EXP_NULL_LABEL: +		strlcpy(buf, "IPv4 Explicit Null", len); +		return (buf); +	case MPLS_RA_LABEL: +		strlcpy(buf, "Router Alert", len); +		return (buf); +	case MPLS_V6_EXP_NULL_LABEL: +		strlcpy(buf, "IPv6 Explict Null", len); +		return (buf); +	case MPLS_IMP_NULL_LABEL: +		strlcpy(buf, "implicit-null", len); +		return (buf); +	case MPLS_ENTROPY_LABEL_INDICATOR: +		strlcpy(buf, "Entropy Label Indicator", len); +		return (buf); +	case MPLS_GAL_LABEL: +		strlcpy(buf, "Generic Associated Channel", len); +		return (buf); +	case MPLS_OAM_ALERT_LABEL: +		strlcpy(buf, "OAM Alert", len); +		return (buf); +	case MPLS_EXTENSION_LABEL: +		strlcpy(buf, "Extension", len); +		return (buf); +	default: +		if (label < 16) +			snprintf(buf, len, "Reserved (%u)", label); +		else +			snprintf(buf, len, "%u", label); +		return (buf); +	}  }  /* constants used by ldpd */ @@ -166,7 +160,7 @@ label2str (mpls_label_t label, char *buf, size_t len)  #define MPLS_LABEL_RTALERT	1               /* Router Alert Label       */  #define MPLS_LABEL_IPV6NULL	2               /* IPv6 Explicit NULL Label */  #define MPLS_LABEL_IMPLNULL	3               /* Implicit NULL Label      */ -/*      MPLS_LABEL_RESERVED	4-15 */		/* Values 4-15 are reserved */ +	/*      MPLS_LABEL_RESERVED	4-15 */ /* Values 4-15 are reserved */  #define MPLS_LABEL_RESERVED_MAX 15  #define MPLS_LABEL_MAX		((1 << 20) - 1)  | 
