Commit e2b02cb4 authored by David S. Miller's avatar David S. Miller

[MPLS]: Add MPLS support to PPP.

parent 2c71474b
...@@ -57,7 +57,9 @@ ...@@ -57,7 +57,9 @@
#define NP_IPV6 1 /* Internet Protocol V6 */ #define NP_IPV6 1 /* Internet Protocol V6 */
#define NP_IPX 2 /* IPX protocol */ #define NP_IPX 2 /* IPX protocol */
#define NP_AT 3 /* Appletalk protocol */ #define NP_AT 3 /* Appletalk protocol */
#define NUM_NP 4 /* Number of NPs. */ #define NP_MPLS_UC 4 /* MPLS unicast */
#define NP_MPLS_MC 5 /* MPLS multicast */
#define NUM_NP 6 /* Number of NPs. */
#define MPHDRLEN 6 /* multilink protocol header length */ #define MPHDRLEN 6 /* multilink protocol header length */
#define MPHDRLEN_SSN 4 /* ditto with short sequence numbers */ #define MPHDRLEN_SSN 4 /* ditto with short sequence numbers */
...@@ -281,6 +283,10 @@ static inline int proto_to_npindex(int proto) ...@@ -281,6 +283,10 @@ static inline int proto_to_npindex(int proto)
return NP_IPX; return NP_IPX;
case PPP_AT: case PPP_AT:
return NP_AT; return NP_AT;
case PPP_MPLS_UC:
return NP_MPLS_UC;
case PPP_MPLS_MC:
return NP_MPLS_MC;
} }
return -EINVAL; return -EINVAL;
} }
...@@ -291,6 +297,8 @@ static const int npindex_to_proto[NUM_NP] = { ...@@ -291,6 +297,8 @@ static const int npindex_to_proto[NUM_NP] = {
PPP_IPV6, PPP_IPV6,
PPP_IPX, PPP_IPX,
PPP_AT, PPP_AT,
PPP_MPLS_UC,
PPP_MPLS_MC,
}; };
/* Translates an ethertype into an NP index */ /* Translates an ethertype into an NP index */
...@@ -306,6 +314,10 @@ static inline int ethertype_to_npindex(int ethertype) ...@@ -306,6 +314,10 @@ static inline int ethertype_to_npindex(int ethertype)
case ETH_P_PPPTALK: case ETH_P_PPPTALK:
case ETH_P_ATALK: case ETH_P_ATALK:
return NP_AT; return NP_AT;
case ETH_P_MPLS_UC:
return NP_MPLS_UC;
case ETH_P_MPLS_MC:
return NP_MPLS_MC;
} }
return -1; return -1;
} }
...@@ -316,6 +328,8 @@ static const int npindex_to_ethertype[NUM_NP] = { ...@@ -316,6 +328,8 @@ static const int npindex_to_ethertype[NUM_NP] = {
ETH_P_IPV6, ETH_P_IPV6,
ETH_P_IPX, ETH_P_IPX,
ETH_P_PPPTALK, ETH_P_PPPTALK,
ETH_P_MPLS_UC,
ETH_P_MPLS_MC,
}; };
/* /*
......
...@@ -74,12 +74,15 @@ ...@@ -74,12 +74,15 @@
#define PPP_IPV6 0x57 /* Internet Protocol Version 6 */ #define PPP_IPV6 0x57 /* Internet Protocol Version 6 */
#define PPP_COMPFRAG 0xfb /* fragment compressed below bundle */ #define PPP_COMPFRAG 0xfb /* fragment compressed below bundle */
#define PPP_COMP 0xfd /* compressed packet */ #define PPP_COMP 0xfd /* compressed packet */
#define PPP_MPLS_UC 0x0281 /* Multi Protocol Label Switching - Unicast */
#define PPP_MPLS_MC 0x0283 /* Multi Protocol Label Switching - Multicast */
#define PPP_IPCP 0x8021 /* IP Control Protocol */ #define PPP_IPCP 0x8021 /* IP Control Protocol */
#define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */ #define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */
#define PPP_IPXCP 0x802b /* IPX Control Protocol */ #define PPP_IPXCP 0x802b /* IPX Control Protocol */
#define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */ #define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */
#define PPP_CCPFRAG 0x80fb /* CCP at link level (below MP bundle) */ #define PPP_CCPFRAG 0x80fb /* CCP at link level (below MP bundle) */
#define PPP_CCP 0x80fd /* Compression Control Protocol */ #define PPP_CCP 0x80fd /* Compression Control Protocol */
#define PPP_MPLSCP 0x80fd /* MPLS Control Protocol */
#define PPP_LCP 0xc021 /* Link Control Protocol */ #define PPP_LCP 0xc021 /* Link Control Protocol */
#define PPP_PAP 0xc023 /* Password Authentication Protocol */ #define PPP_PAP 0xc023 /* Password Authentication Protocol */
#define PPP_LQR 0xc025 /* Link Quality Report protocol */ #define PPP_LQR 0xc025 /* Link Quality Report protocol */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment