diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 3ddb465a75..f804022981 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -13,7 +13,7 @@ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -You should have received a copy of the GN5U General Public License +You should have received a copy of the GNU General Public License along with GNU Zebra; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/isisd/Makefile.am b/isisd/Makefile.am index 69624dced3..bde828bfe2 100644 --- a/isisd/Makefile.am +++ b/isisd/Makefile.am @@ -27,8 +27,7 @@ noinst_HEADERS = \ isis_lsp.h dict.h isis_circuit.h isis_misc.h isis_network.h \ isis_zebra.h isis_dr.h isis_flags.h isis_dynhn.h isis_common.h \ iso_checksum.h isis_csm.h isis_events.h isis_spf.h isis_redist.h \ - isis_route.h isis_routemap.h isis_te.h \ - include-netbsd/clnp.h include-netbsd/esis.h include-netbsd/iso.h + isis_route.h isis_routemap.h isis_te.h isisd_SOURCES = \ isis_main.c $(libisis_a_SOURCES) \ diff --git a/isisd/include-netbsd/.gitignore b/isisd/include-netbsd/.gitignore deleted file mode 100644 index dd5bf7c67c..0000000000 --- a/isisd/include-netbsd/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.arch-inventory -.arch-ids - -*~ -*.loT - diff --git a/isisd/include-netbsd/clnp.h b/isisd/include-netbsd/clnp.h deleted file mode 100644 index 6bc3d25721..0000000000 --- a/isisd/include-netbsd/clnp.h +++ /dev/null @@ -1,547 +0,0 @@ -/* $NetBSD: clnp.h,v 1.13 2001/08/20 12:00:54 wiz Exp $ */ - -/*- - * Copyright (c) 1991, 1993, 1994 - * The Regents of the University of California. 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. - * - * @(#)clnp.h 8.2 (Berkeley) 4/16/94 - */ - -/*********************************************************** - Copyright IBM Corporation 1987 - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of IBM not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -/* - * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison - */ - -/* should be config option but cpp breaks with too many #defines */ -#define DECBIT - -/* - * Return true if the mbuf is a cluster mbuf - */ -#define IS_CLUSTER(m) ((m)->m_flags & M_EXT) - -/* - * Move the halfword into the two characters - */ -#define HTOC(msb, lsb, hword)\ - (msb) = (u_char)((hword) >> 8);\ - (lsb) = (u_char)((hword) & 0xff) -/* - * Move the two charcters into the halfword - */ -#define CTOH(msb, lsb, hword)\ - (hword) = ((msb) << 8) | (lsb) - -/* - * Return true if the checksum has been set - ie. the checksum is - * not zero - */ -#define CKSUM_REQUIRED(clnp)\ - (((clnp)->cnf_cksum_msb != 0) || ((clnp)->cnf_cksum_lsb != 0)) - -/* - * Fixed part of clnp header - */ -struct clnp_fixed { - u_char cnf_proto_id; /* network layer protocol identifier */ - u_char cnf_hdr_len; /* length indicator (octets) */ - u_char cnf_vers; /* version/protocol identifier - * extension */ - u_char cnf_ttl;/* lifetime (500 milliseconds) */ - u_char cnf_type; /* type code */ - /* Includes err_ok, more_segs, and seg_ok */ - u_char cnf_seglen_msb; /* pdu segment length (octets) high - * byte */ - u_char cnf_seglen_lsb; /* pdu segment length (octets) low - * byte */ - u_char cnf_cksum_msb; /* checksum high byte */ - u_char cnf_cksum_lsb; /* checksum low byte */ -} __attribute__((packed)); -#define CNF_TYPE 0x1f -#define CNF_ERR_OK 0x20 -#define CNF_MORE_SEGS 0x40 -#define CNF_SEG_OK 0x80 - -#define CLNP_CKSUM_OFF 0x07 /* offset of checksum */ - -#define clnl_fixed clnp_fixed - -/* - * Segmentation part of clnp header - */ -struct clnp_segment { - u_short cng_id; /* data unit identifier */ - u_short cng_off;/* segment offset */ - u_short cng_tot_len; /* total length */ -}; - -/* - * Clnp fragment reassembly structures: - * - * All packets undergoing reassembly are linked together in - * clnp_fragl structures. Each clnp_fragl structure contains a - * pointer to the original clnp packet header, as well as a - * list of packet fragments. Each packet fragment - * is headed by a clnp_frag structure. This structure contains the - * offset of the first and last byte of the fragment, as well as - * a pointer to the data (an mbuf chain) of the fragment. - */ - -/* - * NOTE: - * The clnp_frag structure is stored in an mbuf immedately - * preceding the fragment data. Since there are words in - * this struct, it must be word aligned. - * - * NOTE: - * All the fragment code assumes that the entire clnp header is - * contained in the first mbuf. - */ -struct clnp_frag { - u_int cfr_first; /* offset of first byte of this frag */ - u_int cfr_last; /* offset of last byte of this frag */ - u_int cfr_bytes; /* bytes to shave to get to data */ - struct mbuf *cfr_data; /* ptr to data for this frag */ - struct clnp_frag *cfr_next; /* next fragment in list */ -}; - -struct clnp_fragl { - struct iso_addr cfl_src;/* source of the pkt */ - struct iso_addr cfl_dst;/* destination of the pkt */ - u_short cfl_id; /* id of the pkt */ - u_char cfl_ttl;/* current ttl of pkt */ - u_short cfl_last; /* offset of last byte of packet */ - struct mbuf *cfl_orighdr; /* ptr to original header */ - struct clnp_frag *cfl_frags; /* linked list of fragments for pkt */ - struct clnp_fragl *cfl_next; /* next pkt being reassembled */ -}; - -/* - * The following structure is used to index into an options section - * of a clnp datagram. These values can be used without worry that - * offset or length fields are invalid or too big, etc. That is, - * the consistancy of the options will be guaranteed before this - * structure is filled in. Any pointer (field ending in p) is - * actually the offset from the beginning of the mbuf the option - * is contained in. A value of NULL for any pointer - * means that the option is not present. The length any option - * does not include the option code or option length fields. - */ -struct clnp_optidx { - u_short cni_securep; /* ptr to start of security option */ - char cni_secure_len; /* length of entire security option */ - - u_short cni_srcrt_s; /* offset of start of src rt option */ - u_short cni_srcrt_len; /* length of entire src rt option */ - - u_short cni_recrtp; /* ptr to beginning of recrt option */ - char cni_recrt_len; /* length of entire recrt option */ - - char cni_priorp; /* ptr to priority option */ - - u_short cni_qos_formatp; /* ptr to format of qos - * option */ - char cni_qos_len; /* length of entire qos option */ - - u_char cni_er_reason; /* reason from ER pdu option */ - - /* ESIS options */ - - u_short cni_esct; /* value from ISH ESCT option */ - - u_short cni_netmaskp; /* ptr to beginning of netmask option */ - char cni_netmask_len; /* length of entire netmask - * option */ - - u_short cni_snpamaskp; /* ptr to start of snpamask option */ - char cni_snpamask_len; /* length of entire snpamask - * option */ - -}; - -#define ER_INVALREAS 0xff /* code for invalid ER pdu discard reason */ - -/* given an mbuf and addr of option, return offset from data of mbuf */ -#define CLNP_OPTTOOFF(m, opt) ((u_short) (opt - mtod(m, caddr_t))) - -/* given an mbuf and offset of option, return address of option */ -#define CLNP_OFFTOOPT(m, off) ((caddr_t) (mtod(m, caddr_t) + off)) - -/* return true iff src route is valid */ -#define CLNPSRCRT_VALID(oidx) ((oidx) && (oidx->cni_srcrt_s)) - -/* return the offset field of the src rt */ -#define CLNPSRCRT_OFF(oidx, options)\ - (*((u_char *)(CLNP_OFFTOOPT(options, oidx->cni_srcrt_s) + 1))) - -/* return the type field of the src rt */ -#define CLNPSRCRT_TYPE(oidx, options)\ - ((u_char)(*(CLNP_OFFTOOPT(options, oidx->cni_srcrt_s)))) - -/* return the length of the current address */ -#define CLNPSRCRT_CLEN(oidx, options)\ - ((u_char)(*(CLNP_OFFTOOPT(options, oidx->cni_srcrt_s) + CLNPSRCRT_OFF(oidx, options) - 1))) - -/* return the address of the current address */ -#define CLNPSRCRT_CADDR(oidx, options)\ - ((caddr_t)(CLNP_OFFTOOPT(options, oidx->cni_srcrt_s) + CLNPSRCRT_OFF(oidx, options))) - -/* - * return true if the src route has run out of routes this is true if the - * offset of next route is greater than the end of the rt - */ -#define CLNPSRCRT_TERM(oidx, options)\ - (CLNPSRCRT_OFF(oidx, options) > oidx->cni_srcrt_len) - -/* - * Options a user can set/get - */ -#define CLNPOPT_FLAGS 0x01 /* flags: seg permitted, no er xmit, etc */ -#define CLNPOPT_OPTS 0x02 /* datagram options */ - -/* - * Values for particular datagram options - */ -#define CLNPOVAL_PAD 0xcc /* padding */ -#define CLNPOVAL_SECURE 0xc5 /* security */ -#define CLNPOVAL_SRCRT 0xc8 /* source routing */ -#define CLNPOVAL_RECRT 0xcb /* record route */ -#define CLNPOVAL_QOS 0xc3 /* quality of service */ -#define CLNPOVAL_PRIOR 0xcd /* priority */ -#define CLNPOVAL_ERREAS 0xc1 /* ER PDU ONLY: reason for discard */ - -#define CLNPOVAL_SRCSPEC 0x40 /* source address specific */ -#define CLNPOVAL_DSTSPEC 0x80 /* destination address specific */ -#define CLNPOVAL_GLOBAL 0xc0 /* globally unique */ - -/* Globally Unique QOS */ -#define CLNPOVAL_SEQUENCING 0x10 /* sequencing preferred */ -#define CLNPOVAL_CONGESTED 0x08 /* congestion experienced */ -#define CLNPOVAL_LOWDELAY 0x04 /* low transit delay */ - -#define CLNPOVAL_PARTRT 0x00 /* partial source routing */ -#define CLNPOVAL_COMPRT 0x01 /* complete source routing */ - -/* - * Clnp flags used in a control block flags field. - * NOTE: these must be out of the range of bits defined in ../net/raw_cb.h - */ -#define CLNP_NO_SEG 0x010 /* segmentation not permitted */ -#define CLNP_NO_ER 0x020 /* do not generate ERs */ -#define CLNP_SEND_RAW 0x080 /* send pkt as RAW DT not TP DT */ -#define CLNP_NO_CKSUM 0x100 /* don't use clnp checksum */ -#define CLNP_ECHO 0x200 /* send echo request */ -#define CLNP_NOCACHE 0x400 /* don't store cache information */ -#define CLNP_ECHOR 0x800 /* send echo reply */ - -/* valid clnp flags */ -#define CLNP_VFLAGS \ - (CLNP_SEND_RAW|CLNP_NO_SEG|CLNP_NO_ER|CLNP_NO_CKSUM|\ - CLNP_ECHO|CLNP_NOCACHE|CLNP_ECHOR) - -/* - * Constants used by clnp - */ -#define CLNP_HDR_MIN (sizeof (struct clnp_fixed)) -#define CLNP_HDR_MAX (254) -#define CLNP_TTL_UNITS 2 /* 500 milliseconds */ -#define CLNP_TTL 15*CLNP_TTL_UNITS /* time to live (seconds) */ -#define ISO8473_V1 0x01 - -/* - * Clnp packet types - * In order to test raw clnp and tp/clnp simultaneously, a third type of - * packet has been defined: CLNP_RAW. This is done so that the input - * routine can switch to the correct input routine (rclnp_input or - * tpclnp_input) based on the type field. If clnp had a higher level - * protocol field, this would not be necessary. - */ -#define CLNP_DT 0x1C /* normal data */ -#define CLNP_ER 0x01 /* error report */ -#define CLNP_RAW 0x1D /* debug only */ -#define CLNP_EC 0x1E /* echo packet */ -#define CLNP_ECR 0x1F /* echo reply */ - -/* - * ER pdu error codes - */ -#define GEN_NOREAS 0x00 /* reason not specified */ -#define GEN_PROTOERR 0x01 /* protocol procedure error */ -#define GEN_BADCSUM 0x02 /* incorrect checksum */ -#define GEN_CONGEST 0x03 /* pdu discarded due to congestion */ -#define GEN_HDRSYNTAX 0x04 /* header syntax error */ -#define GEN_SEGNEEDED 0x05 /* need segmentation but not allowed */ -#define GEN_INCOMPLETE 0x06 /* incomplete pdu received */ -#define GEN_DUPOPT 0x07 /* duplicate option */ - -/* address errors */ -#define ADDR_DESTUNREACH 0x80 /* destination address unreachable */ -#define ADDR_DESTUNKNOWN 0x81 /* destination address unknown */ - -/* source routing */ -#define SRCRT_UNSPECERR 0x90 /* unspecified src rt error */ -#define SRCRT_SYNTAX 0x91 /* syntax error in src rt field */ -#define SRCRT_UNKNOWNADDR 0x92 /* unknown addr in src rt field */ -#define SRCRT_BADPATH 0x93 /* path not acceptable */ - -/* lifetime */ -#define TTL_EXPTRANSIT 0xa0 /* lifetime expired during transit */ -#define TTL_EXPREASS 0xa1 /* lifetime expired during reassembly */ - -/* pdu discarded */ -#define DISC_UNSUPPOPT 0xb0 /* unsupported option not specified? */ -#define DISC_UNSUPPVERS 0xb1 /* unsupported protocol version */ -#define DISC_UNSUPPSECURE 0xb2 /* unsupported security option */ -#define DISC_UNSUPPSRCRT 0xb3 /* unsupported src rt option */ -#define DISC_UNSUPPRECRT 0xb4 /* unsupported rec rt option */ - -/* reassembly */ -#define REASS_INTERFERE 0xc0 /* reassembly interference */ -#define CLNP_ERRORS 22 - - -#ifdef CLNP_ER_CODES -u_char clnp_er_codes[CLNP_ERRORS] = { - GEN_NOREAS, GEN_PROTOERR, GEN_BADCSUM, GEN_CONGEST, - GEN_HDRSYNTAX, GEN_SEGNEEDED, GEN_INCOMPLETE, GEN_DUPOPT, - ADDR_DESTUNREACH, ADDR_DESTUNKNOWN, - SRCRT_UNSPECERR, SRCRT_SYNTAX, SRCRT_UNKNOWNADDR, SRCRT_BADPATH, - TTL_EXPTRANSIT, TTL_EXPREASS, - DISC_UNSUPPOPT, DISC_UNSUPPVERS, DISC_UNSUPPSECURE, - DISC_UNSUPPSRCRT, DISC_UNSUPPRECRT, REASS_INTERFERE -}; -#endif - -#ifdef TROLL - -#define TR_DUPEND 0x01 /* duplicate end of fragment */ -#define TR_DUPPKT 0x02 /* duplicate entire packet */ -#define TR_DROPPKT 0x04 /* drop packet on output */ -#define TR_TRIM 0x08 /* trim bytes from packet */ -#define TR_CHANGE 0x10 /* change bytes in packet */ -#define TR_MTU 0x20 /* delta to change device mtu */ -#define TR_CHUCK 0x40 /* drop packet in rclnp_input */ -#define TR_BLAST 0x80 /* force rclnp_output to blast many - * packet */ -#define TR_RAWLOOP 0x100 /* make if_loop call clnpintr - * directly */ -struct troll { - int tr_ops; /* operations to perform */ - float tr_dup_size; /* % to duplicate */ - float tr_dup_freq; /* frequency to duplicate packets */ - float tr_drop_freq; /* frequence to drop packets */ - int tr_mtu_adj; /* delta to adjust if mtu */ - int tr_blast_cnt; /* # of pkts to blast out */ -}; - -#define SN_OUTPUT(clcp, m)\ - troll_output(clcp->clc_ifp, m, clcp->clc_firsthop, clcp->clc_rt) - -#define SN_MTU(ifp, rt) (((rt && rt->rt_rmx.rmx_mtu) ?\ - rt->rt_rmx.rmx_mtu : clnp_badmtu(ifp, rt, __LINE__, __FILE__))\ - - trollctl.tr_mtu_adj) - -#ifdef _KERNEL -extern float troll_random; -#endif - -#else /* NO TROLL */ - -#define SN_OUTPUT(clcp, m)\ - (*clcp->clc_ifp->if_output)(clcp->clc_ifp, m, clcp->clc_firsthop, \ - clcp->clc_rt) - -#define SN_MTU(ifp, rt) (((rt && rt->rt_rmx.rmx_mtu) ?\ - rt->rt_rmx.rmx_mtu : clnp_badmtu(ifp, rt, __LINE__, __FILE__))) - -#endif /* TROLL */ - -/* - * Macro to remove an address from a clnp header - */ -#define CLNP_EXTRACT_ADDR(isoa, hoff, hend)\ - {\ - isoa.isoa_len = (u_char)*hoff;\ - if ((((++hoff) + isoa.isoa_len) > hend) ||\ - (isoa.isoa_len > 20) || (isoa.isoa_len == 0)) {\ - hoff = (caddr_t)0;\ - } else {\ - (void) bcopy(hoff, (caddr_t)isoa.isoa_genaddr, \ - isoa.isoa_len);\ - hoff += isoa.isoa_len;\ - }\ - } - -/* - * Macro to insert an address into a clnp header - */ -#define CLNP_INSERT_ADDR(hoff, isoa)\ - *hoff++ = (isoa).isoa_len;\ - (void) bcopy((caddr_t)((isoa).isoa_genaddr), hoff, (isoa).isoa_len);\ - hoff += (isoa).isoa_len; - -/* - * Clnp hdr cache. Whenever a clnp packet is sent, a copy of the - * header is made and kept in this cache. In addition to a copy of - * the cached clnp hdr, the cache contains - * information necessary to determine whether the new packet - * to send requires a new header to be built. - */ -struct clnp_cache { - /* these fields are used to check the validity of the cache */ - struct iso_addr clc_dst;/* destination of packet */ - struct mbuf *clc_options; /* ptr to options mbuf */ - int clc_flags; /* flags passed to clnp_output */ - - /* these fields are state that clnp_output requires to finish the pkt */ - int clc_segoff; /* offset of seg part of header */ - struct rtentry *clc_rt; /* ptr to rtentry (points into the route - * structure) */ - struct sockaddr *clc_firsthop; /* first hop of packet */ - struct ifnet *clc_ifp;/* ptr to interface structure */ - struct iso_ifaddr - *clc_ifa;/* ptr to interface address */ - struct mbuf *clc_hdr;/* cached pkt hdr (finally)! */ -}; - -#ifdef _KERNEL -struct iso_addr; -struct sockaddr_iso; -struct mbuf; -struct clnp_segment; -struct sockaddr; -struct rt_entry; -struct clnp_fragl; -struct clnp_optidx; -struct isopcb; -struct snpa_hdr; -struct iso_ifaddr; -struct route_iso; - -/* clnp_debug.c */ -char *clnp_hexp __P((char *, int, char *)); -char *clnp_iso_addrp __P((struct iso_addr *)); -char *clnp_saddr_isop __P((struct sockaddr_iso *)); - -/* clnp_er.c */ -void clnp_er_input __P((struct mbuf *, struct iso_addr *, u_int)); -void clnp_discard __P((struct mbuf *, u_int)); -void clnp_emit_er __P((struct mbuf *, u_int)); -int clnp_er_index __P((u_int)); - -int clnp_fragment __P((struct ifnet *, struct mbuf *, struct sockaddr *, - int, int, int, struct rtentry *)); -struct mbuf *clnp_reass __P((struct mbuf *, struct iso_addr *, - struct iso_addr *, struct clnp_segment *)); -int clnp_newpkt __P((struct mbuf *, struct iso_addr *, struct iso_addr *, - struct clnp_segment *)); -void clnp_insert_frag __P((struct clnp_fragl *, struct mbuf *, - struct clnp_segment *)); -struct mbuf *clnp_comp_pdu __P((struct clnp_fragl *)); -#ifdef TROLL -float troll_random __P((void)); -int troll_output __P((struct ifnet *, struct mbuf *, struct sockaddr *, - struct rtentry *)); -#endif - -/* clnp_input.c */ -void clnp_init __P((void)); -void clnlintr __P((void)); -void clnp_input __P((struct mbuf *, ...)); - -/* clnp_options.c */ -void clnp_update_srcrt __P((struct mbuf *, struct clnp_optidx *)); -void clnp_dooptions __P((struct mbuf *, struct clnp_optidx *, struct ifnet *, - struct iso_addr *)); -int clnp_set_opts __P((struct mbuf **, struct mbuf **)); -int clnp_opt_sanity __P((struct mbuf *, caddr_t, int, struct clnp_optidx *)); - -/* clnp_output.c */ -int clnp_output __P((struct mbuf *, ...)); -void clnp_ctloutput __P((void)); - -/* clnp_raw.c */ -void rclnp_input __P((struct mbuf *, ...)); -int rclnp_output __P((struct mbuf *, ...)); -int rclnp_ctloutput __P((int, struct socket *, int, int, struct mbuf **)); -int clnp_usrreq __P((struct socket *, int, struct mbuf *, struct mbuf *, - struct mbuf *, struct proc *)); - -/* clnp_subr.c */ -struct mbuf *clnp_data_ck __P((struct mbuf *, int)); -caddr_t clnp_extract_addr __P((caddr_t, int, struct iso_addr *, - struct iso_addr *)); -int clnp_ours __P((struct iso_addr *)); -void clnp_forward __P((struct mbuf *, int, struct iso_addr *, - struct clnp_optidx *, int, struct snpa_hdr *)); -caddr_t clnp_insert_addr __P((caddr_t, struct iso_addr *, struct iso_addr *)); -int clnp_route __P((struct iso_addr *, struct route_iso *, int, - struct sockaddr **, struct iso_ifaddr **)); -int clnp_srcroute __P((struct mbuf *, struct clnp_optidx *, struct route_iso *, - struct sockaddr **, struct iso_ifaddr **, - struct iso_addr *)); -int clnp_echoreply __P((struct mbuf *, int, struct sockaddr_iso *, - struct sockaddr_iso *, struct clnp_optidx *)); -int clnp_badmtu __P((struct ifnet *, struct rtentry *, int, char *)); -void clnp_ypocb __P((caddr_t, caddr_t, u_int)); - -/* clnp_timer.c */ -struct clnp_fragl *clnp_freefrags __P((struct clnp_fragl *)); -void clnp_slowtimo __P((void)); -void clnp_drain __P((void)); - -#ifdef TROLL -struct troll trollctl; -#endif /* TROLL */ - -#endif /* _KERNEL */ diff --git a/isisd/include-netbsd/esis.h b/isisd/include-netbsd/esis.h deleted file mode 100644 index ded864e6a6..0000000000 --- a/isisd/include-netbsd/esis.h +++ /dev/null @@ -1,146 +0,0 @@ -/* $NetBSD: esis.h,v 1.11 1997/11/03 15:01:19 is Exp $ */ - -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. - * - * @(#)esis.h 8.1 (Berkeley) 6/10/93 - */ - -/*********************************************************** - Copyright IBM Corporation 1987 - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of IBM not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -/* - * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison - */ - -#include - -#define SNPAC_AGE 60 /* seconds */ -#define ESIS_CONFIG 60 /* seconds */ -#define ESIS_HT (ESIS_CONFIG * 2) - -/* - * Fixed part of an ESIS header - */ -struct esis_fixed { - u_char esis_proto_id; /* network layer protocol identifier */ - u_char esis_hdr_len; /* length indicator (octets) */ - u_char esis_vers; /* version/protocol identifier - * extension */ - u_char esis_res1; /* reserved */ - u_char esis_type; /* type code */ - /* technically, type should be &='d 0x1f */ -#define ESIS_ESH 0x02 /* End System Hello */ -#define ESIS_ISH 0x04 /* Intermediate System Hello */ -#define ESIS_RD 0x06 /* Redirect */ - u_char esis_ht_msb; /* holding time (seconds) high byte */ - u_char esis_ht_lsb; /* holding time (seconds) low byte */ - u_char esis_cksum_msb; /* checksum high byte */ - u_char esis_cksum_lsb; /* checksum low byte */ -} __attribute__((packed)); -/* - * Values for ESIS datagram options - */ -#define ESISOVAL_NETMASK 0xe1 /* address mask option, RD PDU only */ -#define ESISOVAL_SNPAMASK 0xe2 /* snpa mask option, RD PDU only */ -#define ESISOVAL_ESCT 0xc6 /* end system conf. timer, ISH PDU - * only */ - - -#define ESIS_CKSUM_OFF 0x07 -#define ESIS_CKSUM_REQUIRED(pdu)\ - ((pdu->esis_cksum_msb != 0) || (pdu->esis_cksum_lsb != 0)) - -#define ESIS_VERSION 1 - -struct esis_stat { - u_short es_nomem; /* insufficient memory to send hello */ - u_short es_badcsum; /* incorrect checksum */ - u_short es_badvers; /* incorrect version number */ - u_short es_badtype; /* unknown pdu type field */ - u_short es_toosmall; /* packet too small */ - u_short es_eshsent; /* ESH sent */ - u_short es_eshrcvd; /* ESH rcvd */ - u_short es_ishsent; /* ISH sent */ - u_short es_ishrcvd; /* ISH rcvd */ - u_short es_rdsent; /* RD sent */ - u_short es_rdrcvd; /* RD rcvd */ -}; - -#ifdef _KERNEL -struct esis_stat esis_stat; -struct socket; -struct mbuf; -struct snpa_hdr; -struct clnp_optidx; -struct iso_addr; -struct rtentry; -struct sockaddr_dl; - -void esis_init __P((void)); -int esis_usrreq __P((struct socket *, int, struct mbuf *, struct mbuf *, - struct mbuf *, struct proc *)); -void esis_input __P((struct mbuf *, ...)); -void esis_rdoutput __P((struct snpa_hdr *, struct mbuf *, struct clnp_optidx *, - struct iso_addr *, struct rtentry *)); -int esis_insert_addr __P((caddr_t *, int *, struct iso_addr *, struct mbuf *, - int)); -void esis_eshinput __P((struct mbuf *, struct snpa_hdr *)); -void esis_ishinput __P((struct mbuf *, struct snpa_hdr *)); -void esis_rdinput __P((struct mbuf *, struct snpa_hdr *)); -void esis_config __P((void *)); -void esis_shoutput __P((struct ifnet *, int, int, caddr_t, int, - struct iso_addr *)); -void isis_input __P((struct mbuf *, ...)); -int isis_output __P((struct mbuf *, ...)); -void *esis_ctlinput __P((int, struct sockaddr *, void *)); -#endif /* _KERNEL */ diff --git a/isisd/include-netbsd/iso.h b/isisd/include-netbsd/iso.h deleted file mode 100644 index 42b9bc88de..0000000000 --- a/isisd/include-netbsd/iso.h +++ /dev/null @@ -1,214 +0,0 @@ -/* $NetBSD: iso.h,v 1.13 2000/07/28 12:13:34 kleink Exp $ */ - -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. - * - * @(#)iso.h 8.1 (Berkeley) 6/10/93 - */ - -/*********************************************************** - Copyright IBM Corporation 1987 - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of IBM not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -/* - * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison - */ - -#ifndef _NETISO_ISO_H_ -#define _NETISO_ISO_H_ - -#if 0 -#include -#endif - -#if 0 -#ifndef sa_family_t -typedef __sa_family_t sa_family_t; -#define sa_family_t __sa_family_t -#endif -#endif -/* - * Return true if this is a multicast address - * This assumes that the bit transmission is lsb first. This - * assumption is valid for 802.3 but not 802.5. There is a - * kludge to get around this for 802.5 -- see if_lan.c - * where subnetwork header is setup. - */ -#define IS_MULTICAST(snpa)\ - ((snpa)[0] & 0x01) - -/* - * Protocols - */ -#define ISOPROTO_TCP 6 /* IETF experiment */ -#define ISOPROTO_UDP 17 /* IETF experiment */ -#define ISOPROTO_TP0 25 /* connection oriented transport protocol */ -#define ISOPROTO_TP1 26 /* not implemented */ -#define ISOPROTO_TP2 27 /* not implemented */ -#define ISOPROTO_TP3 28 /* not implemented */ -#define ISOPROTO_TP4 29 /* connection oriented transport protocol */ -#define ISOPROTO_TP ISOPROTO_TP4 /* tp-4 with negotiation */ -#define ISOPROTO_CLTP 30 /* connectionless transport (not yet impl.) */ -#define ISOPROTO_CLNP 31 /* connectionless internetworking protocol */ -#define ISOPROTO_X25 32 /* cons */ -#define ISOPROTO_INACT_NL 33 /* inactive network layer! */ -#define ISOPROTO_ESIS 34 /* ES-IS protocol */ -#define ISOPROTO_INTRAISIS 35 /* IS-IS protocol */ -#define ISOPROTO_IDRP 36 /* Interdomain Routing Protocol */ - -#define ISOPROTO_RAW 255 /* raw clnp */ -#define ISOPROTO_MAX 256 - -#define ISO_PORT_RESERVED 1024 -#define ISO_PORT_USERRESERVED 5000 -/* - * Port/socket numbers: standard network functions - * NOT PRESENTLY USED - */ -#define ISO_PORT_MAINT 501 -#define ISO_PORT_ECHO 507 -#define ISO_PORT_DISCARD 509 -#define ISO_PORT_SYSTAT 511 -#define ISO_PORT_NETSTAT 515 -/* - * Port/socket numbers: non-standard application functions - */ -#define ISO_PORT_LOGIN 513 -/* - * Port/socket numbers: public use - */ -#define ISO_PORT_PUBLIC 1024 /* high bit set --> public */ - -/* - * Network layer protocol identifiers - */ -#define ISO8473_CLNP 0x81 -#define ISO9542_ESIS 0x82 -#define ISO9542X25_ESIS 0x8a -#define ISO10589_ISIS 0x83 -#define ISO8878A_CONS 0x84 -#define ISO10747_IDRP 0x85 - - -#ifndef IN_CLASSA_NET -#include -#endif /* IN_CLASSA_NET */ - - - -/* - * The following looks like a sockaddr to facilitate using tree lookup - * routines - */ -struct iso_addr { - u_char isoa_len; /* length (in bytes) */ - char isoa_genaddr[20]; /* general opaque address */ -}; - -struct sockaddr_iso { - u_char siso_len; /* length */ - sa_family_t siso_family; /* family */ - u_char siso_plen; /* presentation selector length */ - u_char siso_slen; /* session selector length */ - u_char siso_tlen; /* transport selector length */ - struct iso_addr siso_addr; /* network address */ - u_char siso_pad[6]; /* space for gosip v2 sels */ - /* makes struct 32 bytes long */ -}; -#define siso_nlen siso_addr.isoa_len -#define siso_data siso_addr.isoa_genaddr - -#define TSEL(s) ((caddr_t)((s)->siso_data + (s)->siso_nlen)) - -#define SAME_ISOADDR(a, b) \ - (bcmp((a)->siso_data, (b)->siso_data, (unsigned)(a)->siso_nlen)==0) -#define SAME_ISOIFADDR(a, b) (bcmp((a)->siso_data, (b)->siso_data, \ - (unsigned)((b)->siso_nlen - (b)->siso_tlen)) == 0) -/* - * The following are specific values for siso->siso_data[0], - * otherwise known as the AFI: - */ -#define AFI_37 0x37 /* bcd of "37" */ -#define AFI_OSINET 0x47 /* bcd of "47" */ -#define AFI_RFC986 0x47 /* bcd of "47" */ -#define AFI_SNA 0x00 /* SubNetwork Address; invalid really... */ - -#ifdef _KERNEL - -extern struct domain isodomain; -extern struct protosw isosw[]; - -#define satosiso(sa) ((struct sockaddr_iso *)(sa)) -#define sisotosa(siso) ((struct sockaddr *)(siso)) - -#else -/* user utilities definitions from the iso library */ - -#ifndef HAVE_SYS_CDEFS_H -#define __P(x) x -#define __BEGIN_DECLS -#define __END_DECLS -#else -#include -#endif - -__BEGIN_DECLS -struct iso_addr *iso_addr __P((const char *)); -char *iso_ntoa __P((const struct iso_addr *)); - -/* THESE DON'T EXIST YET */ -struct hostent *iso_gethostbyname __P((const char *)); -struct hostent *iso_gethostbyaddr __P((const char *, int, int)); -__END_DECLS - -#endif /* _KERNEL */ - -#endif /* _NETISO_ISO_H_ */ diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c index 8afabede4e..7f8e8deccc 100644 --- a/isisd/isis_adjacency.c +++ b/isisd/isis_adjacency.c @@ -33,7 +33,6 @@ #include "stream.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_flags.h" diff --git a/isisd/isis_bpf.c b/isisd/isis_bpf.c index 889b4c3099..8775e12a24 100644 --- a/isisd/isis_bpf.c +++ b/isisd/isis_bpf.c @@ -34,7 +34,6 @@ #include "if.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_circuit.h" diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index c2b7ec7507..7eee46ef48 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -44,7 +44,6 @@ #include "qobj.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_flags.h" diff --git a/isisd/isis_constants.h b/isisd/isis_constants.h index 8b21894e43..17616d671b 100644 --- a/isisd/isis_constants.h +++ b/isisd/isis_constants.h @@ -35,6 +35,9 @@ #define INTRADOMAIN_ROUTEING_SELECTOR 0 #define SEQUENCE_MODULUS 4294967296 +#define ISO9542_ESIS 0x82 +#define ISO10589_ISIS 0x83 + /* * implementation specific jitter values */ diff --git a/isisd/isis_csm.c b/isisd/isis_csm.c index 0f642a7778..0fbf47aea1 100644 --- a/isisd/isis_csm.c +++ b/isisd/isis_csm.c @@ -33,7 +33,6 @@ #include "stream.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_flags.h" diff --git a/isisd/isis_dlpi.c b/isisd/isis_dlpi.c index 7c7e0909e9..98b18ac38d 100644 --- a/isisd/isis_dlpi.c +++ b/isisd/isis_dlpi.c @@ -38,7 +38,6 @@ #include "if.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_circuit.h" diff --git a/isisd/isis_events.c b/isisd/isis_events.c index abc4471cad..ab42a1e367 100644 --- a/isisd/isis_events.c +++ b/isisd/isis_events.c @@ -33,7 +33,6 @@ #include "table.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_flags.h" diff --git a/isisd/isis_main.c b/isisd/isis_main.c index 44c7840022..84ebf8ceaa 100644 --- a/isisd/isis_main.c +++ b/isisd/isis_main.c @@ -41,7 +41,6 @@ #include "qobj.h" #include "isisd/dict.h" -#include "include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_flags.h" diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c index 1dfb4623f6..065fa8f3fc 100644 --- a/isisd/isis_pdu.c +++ b/isisd/isis_pdu.c @@ -36,7 +36,6 @@ #include "md5.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_flags.h" diff --git a/isisd/isis_pfpacket.c b/isisd/isis_pfpacket.c index 2427047b38..885ee2c875 100644 --- a/isisd/isis_pfpacket.c +++ b/isisd/isis_pfpacket.c @@ -31,7 +31,6 @@ #include "if.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_circuit.h" diff --git a/isisd/isisd.c b/isisd/isisd.c index d6ce627b93..28eafa5522 100644 --- a/isisd/isisd.c +++ b/isisd/isisd.c @@ -37,7 +37,6 @@ #include "qobj.h" #include "isisd/dict.h" -#include "isisd/include-netbsd/iso.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_flags.h" diff --git a/zebra/zebra_mpls_netlink.c b/zebra/zebra_mpls_netlink.c index 1f894b33c6..045bee2b91 100644 --- a/zebra/zebra_mpls_netlink.c +++ b/zebra/zebra_mpls_netlink.c @@ -1,3 +1,24 @@ +/* MPLS forwarding table updates using netlink over GNU/Linux system. + * Copyright (C) 2016 Cumulus Networks, Inc. + * + * This file is part of Quagga. + * + * Quagga is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * Quagga is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Quagga; see the file COPYING. If not, write to the Free + * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + #include #include "zebra/rt.h" #include "zebra/rt_netlink.h"