diff options
Diffstat (limited to 'sys/netmpls')
-rw-r--r-- | sys/netmpls/mpls.h | 14 | ||||
-rw-r--r-- | sys/netmpls/mpls_input.c | 10 | ||||
-rw-r--r-- | sys/netmpls/mpls_raw.c | 4 |
3 files changed, 17 insertions, 11 deletions
diff --git a/sys/netmpls/mpls.h b/sys/netmpls/mpls.h index 7b4b464d642..03017c9b63c 100644 --- a/sys/netmpls/mpls.h +++ b/sys/netmpls/mpls.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mpls.h,v 1.13 2008/10/28 01:16:14 michele Exp $ */ +/* $OpenBSD: mpls.h,v 1.14 2008/11/01 16:37:55 michele Exp $ */ /* * Copyright (C) 1999, 2000 and 2001 AYAME Project, WIDE Project. @@ -116,7 +116,9 @@ struct sockaddr_mpls { #define MPLSCTL_DEFTTL 2 #define MPLSCTL_IFQUEUE 3 #define MPLSCTL_MAXINKLOOP 4 -#define MPLSCTL_MAXID 5 +#define MPLSCTL_MAPTTL_IP 5 +#define MPLSCTL_MAPTTL_IP6 6 +#define MPLSCTL_MAXID 7 #define MPLSCTL_NAMES { \ { 0, 0 }, \ @@ -124,6 +126,8 @@ struct sockaddr_mpls { { "ttl", CTLTYPE_INT }, \ { "ifq", CTLTYPE_NODE },\ { "maxloop_inkernel", CTLTYPE_INT }, \ + { "mapttl_ip", CTLTYPE_INT }, \ + { "mapttl_ip6", CTLTYPE_INT }, \ } #define MPLSCTL_VARS { \ @@ -132,6 +136,8 @@ struct sockaddr_mpls { &mpls_defttl, \ 0, \ &mpls_inkloop, \ + &mpls_mapttl_ip, \ + &mpls_mapttl_ip6, \ } #endif @@ -151,9 +157,9 @@ struct mpe_softc { #define MPE_MTU_MAX 8192 void mpe_input(struct mbuf *, struct ifnet *, struct sockaddr_mpls *, - u_int32_t); + u_int8_t); void mpe_input6(struct mbuf *, struct ifnet *, struct sockaddr_mpls *, - u_int32_t); + u_int8_t); extern int mpls_raw_usrreq(struct socket *, int, struct mbuf *, struct mbuf *, struct mbuf *, struct proc *); diff --git a/sys/netmpls/mpls_input.c b/sys/netmpls/mpls_input.c index 39ff4c621b6..e267fd9ea1b 100644 --- a/sys/netmpls/mpls_input.c +++ b/sys/netmpls/mpls_input.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mpls_input.c,v 1.14 2008/10/14 20:43:33 michele Exp $ */ +/* $OpenBSD: mpls_input.c,v 1.15 2008/11/01 16:37:55 michele Exp $ */ /* * Copyright (c) 2008 Claudio Jeker <claudio@openbsd.org> @@ -71,9 +71,9 @@ mpls_input(struct mbuf *m) struct ifnet *ifp = m->m_pkthdr.rcvif; struct sockaddr_mpls *smpls; struct sockaddr_mpls sa_mpls; - struct shim_hdr *shim; + struct shim_hdr *shim; struct rtentry *rt = NULL; - u_int32_t ttl; + u_int8_t ttl; int i, hasbos; if (!mpls_enable) { @@ -111,7 +111,7 @@ mpls_input(struct mbuf *m) m_freem(m); return; } - ttl = htonl(ttl - 1); + ttl--; for (i = 0; i < mpls_inkloop; i++) { bzero(&sa_mpls, sizeof(sa_mpls)); @@ -219,7 +219,7 @@ mpls_input(struct mbuf *m) } /* write back TTL */ - shim->shim_label = (shim->shim_label & ~MPLS_TTL_MASK) | ttl; + shim->shim_label = (shim->shim_label & ~MPLS_TTL_MASK) | htonl(ttl); #ifdef MPLS_DEBUG printf("MPLS: sending on %s outlabel %x dst af %d in %d out %d\n", diff --git a/sys/netmpls/mpls_raw.c b/sys/netmpls/mpls_raw.c index 1f3257cb7ab..2350afe652d 100644 --- a/sys/netmpls/mpls_raw.c +++ b/sys/netmpls/mpls_raw.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mpls_raw.c,v 1.3 2008/05/23 16:03:03 thib Exp $ */ +/* $OpenBSD: mpls_raw.c,v 1.4 2008/11/01 16:37:55 michele Exp $ */ /* * Copyright (C) 1999, 2000 and 2001 AYAME Project, WIDE Project. @@ -129,7 +129,7 @@ mpls_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { if (name[0] >= MPLSCTL_MAXID) - return EOPNOTSUPP; + return (EOPNOTSUPP); /* Almost all sysctl names at this level are terminal. */ if (namelen != 1 && name[0] != MPLSCTL_IFQUEUE) |