*: fix some licensing SNAFUs

bgpd/bgpd.c had a typo
zebra/zebra_mpls_netlink.c was derived from rt_netlink.c
isisd/include-netbsd/* are not needed (2 constants moved over)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
David Lamparter 2016-11-14 11:07:41 +09:00
parent 11ec76edb2
commit 3c3877cd7d
18 changed files with 26 additions and 926 deletions

View File

@ -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. */

View File

@ -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) \

View File

@ -1,6 +0,0 @@
.arch-inventory
.arch-ids
*~
*.loT

View File

@ -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 */

View File

@ -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 <machine/endian.h>
#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 */

View File

@ -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 <sys/ansi.h>
#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 <netinet/in.h>
#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 <sys/cdefs.h>
#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_ */

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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
*/

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 <zebra.h>
#include "zebra/rt.h"
#include "zebra/rt_netlink.h"