提交 c967a087 编写于 作者: T Tom Herbert 提交者: David S. Miller

mpls: Move reserved label definitions

Move to include/uapi/linux/mpls.h to be externally visibile.
Signed-off-by: NTom Herbert <tom@herbertland.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 bc321ed2
...@@ -31,4 +31,14 @@ struct mpls_label { ...@@ -31,4 +31,14 @@ struct mpls_label {
#define MPLS_LS_TTL_MASK 0x000000FF #define MPLS_LS_TTL_MASK 0x000000FF
#define MPLS_LS_TTL_SHIFT 0 #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 */ #endif /* _UAPI_MPLS_H */
...@@ -647,7 +647,7 @@ int nla_get_labels(const struct nlattr *nla, ...@@ -647,7 +647,7 @@ int nla_get_labels(const struct nlattr *nla,
return -EINVAL; return -EINVAL;
switch (dec.label) { switch (dec.label) {
case LABEL_IMPLICIT_NULL: case MPLS_LABEL_IMPLICIT_NULL:
/* RFC3032: This is a label that an LSR may /* RFC3032: This is a label that an LSR may
* assign and distribute, but which never * assign and distribute, but which never
* actually appears in the encapsulation. * actually appears in the encapsulation.
...@@ -935,7 +935,7 @@ static int resize_platform_label_table(struct net *net, size_t limit) ...@@ -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 */ /* 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; struct net_device *lo = net->loopback_dev;
rt0 = mpls_rt_alloc(lo->addr_len); rt0 = mpls_rt_alloc(lo->addr_len);
if (!rt0) if (!rt0)
...@@ -945,7 +945,7 @@ static int resize_platform_label_table(struct net *net, size_t limit) ...@@ -945,7 +945,7 @@ static int resize_platform_label_table(struct net *net, size_t limit)
rt0->rt_via_table = NEIGH_LINK_TABLE; rt0->rt_via_table = NEIGH_LINK_TABLE;
memcpy(rt0->rt_via, lo->dev_addr, lo->addr_len); 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; struct net_device *lo = net->loopback_dev;
rt2 = mpls_rt_alloc(lo->addr_len); rt2 = mpls_rt_alloc(lo->addr_len);
if (!rt2) if (!rt2)
...@@ -973,15 +973,15 @@ static int resize_platform_label_table(struct net *net, size_t limit) ...@@ -973,15 +973,15 @@ static int resize_platform_label_table(struct net *net, size_t limit)
memcpy(labels, old, cp_size); memcpy(labels, old, cp_size);
/* If needed set the predefined labels */ /* If needed set the predefined labels */
if ((old_limit <= LABEL_IPV6_EXPLICIT_NULL) && if ((old_limit <= MPLS_LABEL_IPV6_EXPLICIT_NULL) &&
(limit > LABEL_IPV6_EXPLICIT_NULL)) { (limit > MPLS_LABEL_IPV6_EXPLICIT_NULL)) {
RCU_INIT_POINTER(labels[LABEL_IPV6_EXPLICIT_NULL], rt2); RCU_INIT_POINTER(labels[MPLS_LABEL_IPV6_EXPLICIT_NULL], rt2);
rt2 = NULL; rt2 = NULL;
} }
if ((old_limit <= LABEL_IPV4_EXPLICIT_NULL) && if ((old_limit <= MPLS_LABEL_IPV4_EXPLICIT_NULL) &&
(limit > LABEL_IPV4_EXPLICIT_NULL)) { (limit > MPLS_LABEL_IPV4_EXPLICIT_NULL)) {
RCU_INIT_POINTER(labels[LABEL_IPV4_EXPLICIT_NULL], rt0); RCU_INIT_POINTER(labels[MPLS_LABEL_IPV4_EXPLICIT_NULL], rt0);
rt0 = NULL; rt0 = NULL;
} }
......
#ifndef MPLS_INTERNAL_H #ifndef MPLS_INTERNAL_H
#define 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 { struct mpls_shim_hdr {
__be32 label_stack_entry; __be32 label_stack_entry;
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册