diff options
author | 2008-04-23 11:27:11 +0000 | |
---|---|---|
committer | 2008-04-23 11:27:11 +0000 | |
commit | 2980ee2299e5b39cf347549544da004a9d96ae17 (patch) | |
tree | 3cb7900d2cb462caf6f12571aa73a2faa7323333 | |
parent | I hate working outside the tree. (diff) | |
download | wireguard-openbsd-2980ee2299e5b39cf347549544da004a9d96ae17.tar.xz wireguard-openbsd-2980ee2299e5b39cf347549544da004a9d96ae17.zip |
not needed any more...
-rw-r--r-- | sys/netmpls/mpls_lse.c | 333 | ||||
-rw-r--r-- | sys/netmpls/mpls_var.h | 65 |
2 files changed, 0 insertions, 398 deletions
diff --git a/sys/netmpls/mpls_lse.c b/sys/netmpls/mpls_lse.c deleted file mode 100644 index 92ec6386d37..00000000000 --- a/sys/netmpls/mpls_lse.c +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright (C) 1999, 2000 and 2001 AYAME Project, WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * - * $Id: mpls_lse.c,v 1.1 2008/04/23 11:00:35 norby Exp $ - */ - -#include <sys/param.h> -#include <sys/malloc.h> -#include <sys/mbuf.h> -#include <sys/errno.h> -#include <sys/protosw.h> -#include <sys/socket.h> -#include <sys/socketvar.h> -#include <sys/systm.h> - -#include <net/if.h> -#include <net/if_types.h> -#include <net/route.h> - -#include <netmpls/mpls.h> -#include <netmpls/mpls_var.h> - -/* - * MPLS Label Switching Engine. - */ - -/* - * Process a received MPLS packet; - * the packet is in the mbuf chain m from mpls_{ether,...}. - */ -int -mpls_lse(struct ifnet *ifp, struct mbuf *m, struct sockaddr_mpls *dst, - u_int8_t bosf) -{ - struct route mplsroute; - struct route *ro = &mplsroute; - struct sockaddr_mpls *rodst = satosmpls(&mplsroute.ro_dst); /* Actual labeland stuff */ - struct rtentry *rt = NULL; - struct sockaddr_mpls *dstnew; - struct sockaddr_mpls smpls; /* XXX adhoc XXX */ - u_int8_t exp_bits; /* XXX adhoc XXX */ - int ink_loop, error = 0, bad = 0; - - bzero((caddr_t)ro, sizeof(*ro)); - bcopy((caddr_t)dst, (caddr_t)rodst, dst->smpls_len); - -/* XXX: Kefren: I don't understand this inkloop so I've replaced it with asingle - loop for easy break */ - for (ink_loop = 0; ink_loop < mpls_inkloop; ink_loop++) { -/* for (ink_loop = 0; ink_loop < 1; ink_loop++) { */ - -#ifdef MPLS_DEBUG - printf("MPLS_DEBUG: %s(%d). [label=%d]\n", - __FILE__, __LINE__, ntohl(rodst->smpls_in_label)); -#endif /* MPLS_DEBUG */ - - /* - * OPERATIONS for Reserved Labels - */ - if (ntohl(rodst->smpls_in_label) <= MPLS_LABEL_RESERVED_MAX) { - printf("MPLS_DEBUG: %s(%d). [bosf = %d label = %s]\n", - __FILE__, __LINE__, bosf, - ntohl(rodst->smpls_in_label)); - switch (ntohl(rodst->smpls_in_label)) { -#ifdef INET - case MPLS_LABEL_IPV4NULL: -#if 0 /* claudio@ */ - if (bosf) { - error = mpls_ip_input(m); - goto done; - } -#endif -#ifdef MPLS_DEBUG -#endif /* MPLS_DEBUG */ - break; -#endif /* INET */ -#ifdef INET6 - case MPLS_LABEL_IPV6NULL: -#if 0 /* claudio@ */ - if (bosf) { - error = mpls_ip6_input(m); - goto done; - } -#endif - break; -#endif /* INET6 */ - } - - /* label is reserved, */ - /* but operation is unsupported or invalid */ - error = EINVAL; - printf("MPLS_DEBUG: %s(%d).\n", __FILE__, __LINE__); - bad = 1; - break; - } /* MPLS RESERVED label */ - - /* - * switch packet - * - * XXX: no really, this is fun. AYAME sucks so much. */ - exp_bits = rodst->smpls_out_exp; - rodst->smpls_out_exp = 0; - - rtalloc(ro); - rt = ro->ro_rt; - bzero((caddr_t)ro, sizeof(*ro)); - - if (rt == 0) { - /* no entry for this label (silent discard) */ - /* as the scope_id you use is not set interface, etc. */ - /* error = EHOSTUNREACH; */ - error = 0; -#ifdef MPLS_DEBUG - printf("MPLS_DEBUG: %s(%d).\n", __FILE__, __LINE__); -#endif /* MPLS_DEBUG */ - bad = 1; - break; - } - - /* - if ((mtu = rt->rt_rmx.rmx_mtu) == 0) - mtu = ifp->if_mtu; - */ - - - /* - * label operations - */ - rt->rt_use++; - if (rt->rt_flags & RTF_GATEWAY) /* XXX */ - dstnew = satosmpls(rt->rt_gateway); - else { - /* XXX silent discard XXX */ - /* error = EHOSTUNREACH; */ - error = 0; -#ifdef MPLS_DEBUG - printf("MPLS_DEBUG: %s(%d).\n", __FILE__, __LINE__); -#endif /* MPLS_DEBUG */ - bad = 1; - break; - } - -#ifdef MPLS_MCAST - printf("MPLS_MCAST label=%d mclabel=%d\n", - ntohl(dstnew->smpls_in_label) & 0x000fffff, - ntohl(dstnew->smpls_mclabel)); - /* - * if gw_entry have next mplsmc entry, - * call mpls_lse again. - */ - if (dstnew->smpls_mclabel != 0) { - struct sockaddr_mpls smpmpls; - struct mbuf *nm; - memset(&smpmpls, 0, sizeof(smpmpls)); - smpmpls.smpls_len = sizeof(smpmpls); - smpmpls.smpls_family = AF_MPLS; - smpmpls.smpls_in_label = dstnew->smpls_mclabel; -#ifdef MPLS_DEBUG - printf("MPLS_MCAST label=%d mclabel=%d\n", - ntohl(dstnew->smpls_in_label) & 0x000fffff, - ntohl(dstnew->smpls_mclabel)); -#endif /* MPLS_DEBUG */ - nm = m_copym(m, 0, M_COPYALL, M_DONTWAIT); - if (nm != NULL) { -#ifdef MPLS_DEBUG - printf("MPLS_MCAST dup\n"); -#endif /* MPLS_DEBUG */ - mpls_lse(ifp, nm, &smpmpls, bosf); - m_freem(nm); - } - } -#endif /* MPLS_MCAST */ - - if (dstnew->smpls_family != AF_MPLS) { - if (bosf) { - /* send to L3? */ - switch (dstnew->smpls_family) { -#if 0 /* claudio@ */ -#ifdef INET - case AF_INET: - error = mpls_ip_input(m); - goto done; -#endif /* INET */ -#ifdef INET6 - case AF_INET6: - error = mpls_ip6_input(m); - goto done; -#endif /* INET6 */ -#endif - default: - error = EAFNOSUPPORT; -#ifdef MPLS_DEBUG - printf("MPLS_DEBUG: %s(%d).\n", __FILE__, __LINE__); -#endif /* MPLS_DEBUG */ - bad = 1; - } - break; - } else { - /* XXX */ - error = EINVAL; -#ifdef MPLS_DEBUG - printf("MPLS_DEBUG: %s(%d).\n", __FILE__, __LINE__); -#endif /* MPLS_DEBUG */ - bad = 1; - break; - } - } - - /* XXX */ - smpls = *dstnew; - smpls.smpls_out_exp = exp_bits; - dstnew = &smpls; - /* XXX Kefren */ -/* dstnew->smpls_exp = exp_bits;*/ - - switch(dstnew->smpls_operation) { - - case MPLS_OP_POP: /* Label Pop */ - - /* check bos flag */ -#if 0 /* claudio@ */ - if (bosf) { - /* - * XXXXX No ExpNULL XXXXX - * - * I can't know which l3 I shuld send to!! - * now, send to IPv4 stack (XXXXX) - * We have to 'look' into the packet - * and clasify it - * - * error = EINVAL; - * goto bad; - */ - - error = mpls_ip_input(m); - goto done; - } -#endif - /* label pop */ - if ((m = mpls_shim_pop(m, rodst, NULL, &bosf, NULL)) == 0) { - error = ENOBUFS; - goto done; - } - - break; - - case MPLS_OP_PUSH: /* Label Push */ - - if ((m = mpls_shim_push(m, dstnew, NULL, NULL, NULL)) == 0) { - error = ENOBUFS; - goto done; - } - bosf = 0; - - break; - - case MPLS_OP_SWAP: /* Label Swap */ - default: - - if ((m = mpls_shim_swap(m, dstnew, NULL)) == 0) { - error = ENOBUFS; - goto done; - } - } - - ifp = rt->rt_ifp; - /* send to L2 : select outgoing i/f */ - switch (ifp->if_type) { - case IFT_ETHER: - case IFT_ATM: /* now only support scope 0 */ - case IFT_GIF: /* now only support scope 0 */ - error = (*ifp->if_output)(ifp, m, smplstosa(dstnew), rt); - goto done; - case IFT_LOOP: - break; - default: - /* not supported yet: discard */ -#ifdef MPLS_DEBUG - printf("mpls_lse: interface type not supported yet!\n"); -#endif /* MPLS_DEBUG */ - error = EHOSTUNREACH; - bad=1; - } - if (bad) break; - if (rt) { - RTFREE(rt); - rt = 0; - } - } /* The big inkloop for */ - - /* - * Discard broken packet - */ -if (bad) { -#ifdef MPLS_DEBUG - printf("MPLS_DEBUG: %s(%d) [packet discard!!].\n", __FILE__, __LINE__); -#endif /* MPLS_DEBUG */ - m_freem(m); -} - -done: - if (rt) - RTFREE(rt); - return(error); -} diff --git a/sys/netmpls/mpls_var.h b/sys/netmpls/mpls_var.h deleted file mode 100644 index 4d1e2e62437..00000000000 --- a/sys/netmpls/mpls_var.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 1999, 2000 and 2001 AYAME Project, WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * - * $Id: mpls_var.h,v 1.1 2008/04/23 11:00:35 norby Exp $ - */ - -#ifdef _KERNEL -extern int mpls_defttl; -extern int mpls_inkloop; -extern int mpls_push_expnull_ip; -extern int mpls_push_expnull_ip6; -extern int mpls_mapttl_ip; -extern int mpls_mapttl_ip6; - -extern int mpls_lse(struct ifnet *, struct mbuf *, - struct sockaddr_mpls *, u_int8_t); -extern int mpls_canfwbympls(u_int32_t); -extern struct mbuf *mpls_shim_peep(struct mbuf *, struct sockaddr_mpls *, - u_int32_t *, u_int8_t *, u_int8_t *); -extern struct mbuf *mpls_shim_pop(struct mbuf *, struct sockaddr_mpls *, - u_int32_t *, u_int8_t *, u_int8_t *); -extern struct mbuf *mpls_shim_swap(struct mbuf *, struct sockaddr_mpls *, - u_int32_t *); -extern struct mbuf *mpls_shim_push(struct mbuf *, struct sockaddr_mpls *, - u_int32_t *, u_int8_t *, u_int8_t *); - -extern int mpls_raw_usrreq(struct socket *, int, struct mbuf *, - struct mbuf *, struct mbuf *); - -extern int mpls_sysctl(int *, u_int, void *, size_t *, void *, size_t); - - - -extern struct ifqueue mplsintrq; /* MPLS input queue */ - -void mplsintr(void); -#endif /* _KERNEL */ |