diff options
Diffstat (limited to 'net/openbgpd/files/patch-bgpctl_mrtparser.h')
-rw-r--r-- | net/openbgpd/files/patch-bgpctl_mrtparser.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/net/openbgpd/files/patch-bgpctl_mrtparser.h b/net/openbgpd/files/patch-bgpctl_mrtparser.h new file mode 100644 index 000000000000..2f11567e54f1 --- /dev/null +++ b/net/openbgpd/files/patch-bgpctl_mrtparser.h @@ -0,0 +1,122 @@ +Index: bgpctl/mrtparser.h +=================================================================== +RCS file: bgpctl/mrtparser.h +diff -N bgpctl/mrtparser.h +--- /dev/null 1 Jan 1970 00:00:00 -0000 ++++ bgpctl/mrtparser.h 13 Oct 2012 18:22:53 -0000 1.1.1.1 +@@ -0,0 +1,115 @@ ++/* $OpenBSD$ */ ++/* ++ * Copyright (c) 2011 Claudio Jeker <claudio@openbsd.org> ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, 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. ++ */ ++ ++struct sockaddr_vpn4 { ++ u_int8_t sv_len; ++ sa_family_t sv_family; ++ u_int8_t sv_labellen; ++ u_int8_t sv_pad; ++ struct in_addr sv_addr; ++ u_int64_t sv_rd; ++ u_int8_t sv_label[21]; ++ u_int8_t sv_pad2[3]; ++}; ++ ++#define AF_VPNv4 250 /* XXX high enough to not cause issues */ ++ ++union mrt_addr { ++ struct sockaddr_in6 sin6; ++ struct sockaddr_in sin; ++ struct sockaddr_vpn4 svpn4; ++ struct sockaddr sa; ++}; ++ ++/* data structures for the MSG_TABLE_DUMP_V2 format */ ++struct mrt_peer_entry { ++ union mrt_addr addr; ++ u_int32_t bgp_id; ++ u_int32_t asnum; ++}; ++ ++struct mrt_peer { ++ char *view; ++ struct mrt_peer_entry *peers; ++ u_int32_t bgp_id; ++ u_int16_t npeers; ++}; ++ ++struct mrt_attr { ++ void *attr; ++ size_t attr_len; ++}; ++ ++struct mrt_rib_entry { ++ void *aspath; ++ struct mrt_attr *attrs; ++ union mrt_addr nexthop; ++ time_t originated; ++ u_int32_t local_pref; ++ u_int32_t med; ++ u_int16_t peer_idx; ++ u_int16_t aspath_len; ++ u_int16_t nattrs; ++ u_int8_t origin; ++}; ++ ++struct mrt_rib { ++ struct mrt_rib_entry *entries; ++ union mrt_addr prefix; ++ u_int32_t seqnum; ++ u_int16_t nentries; ++ u_int8_t prefixlen; ++}; ++ ++/* data structures for the BGP4MP MESSAGE and STATE types */ ++struct mrt_bgp_state { ++ union mrt_addr src; ++ union mrt_addr dst; ++ u_int32_t src_as; ++ u_int32_t dst_as; ++ u_int16_t old_state; ++ u_int16_t new_state; ++}; ++ ++struct mrt_bgp_msg { ++ union mrt_addr src; ++ union mrt_addr dst; ++ u_int32_t src_as; ++ u_int32_t dst_as; ++ u_int16_t msg_len; ++ void *msg; ++}; ++ ++#define MRT_ATTR_ORIGIN 1 ++#define MRT_ATTR_ASPATH 2 ++#define MRT_ATTR_NEXTHOP 3 ++#define MRT_ATTR_MED 4 ++#define MRT_ATTR_LOCALPREF 5 ++#define MRT_ATTR_MP_REACH_NLRI 14 ++#define MRT_ATTR_AS4PATH 17 ++#define MRT_ATTR_EXTLEN 0x10 ++ ++#define MRT_PREFIX_LEN(x) ((((u_int)x) + 7) / 8) ++ ++struct mrt_parser { ++ void (*dump)(struct mrt_rib *, struct mrt_peer *, void *); ++ void (*state)(struct mrt_bgp_state *, void *); ++ void (*message)(struct mrt_bgp_msg *, void *); ++ void *arg; ++}; ++ ++void mrt_parse(int, struct mrt_parser *, int); |