diff options
Diffstat (limited to 'net/openbgpd/files/patch-bgpd_bgpd.h')
-rw-r--r-- | net/openbgpd/files/patch-bgpd_bgpd.h | 590 |
1 files changed, 274 insertions, 316 deletions
diff --git a/net/openbgpd/files/patch-bgpd_bgpd.h b/net/openbgpd/files/patch-bgpd_bgpd.h index 74ff65d5d6b1..89f2e5115d14 100644 --- a/net/openbgpd/files/patch-bgpd_bgpd.h +++ b/net/openbgpd/files/patch-bgpd_bgpd.h @@ -1,26 +1,27 @@ Index: bgpd/bgpd.h =================================================================== RCS file: /home/cvs/private/hrs/openbgpd/bgpd/bgpd.h,v -retrieving revision 1.1.1.1 -retrieving revision 1.8 -diff -u -p -r1.1.1.1 -r1.8 ---- bgpd/bgpd.h 30 Jun 2009 05:46:15 -0000 1.1.1.1 -+++ bgpd/bgpd.h 22 Oct 2009 15:53:39 -0000 1.8 +retrieving revision 1.1.1.8 +retrieving revision 1.10 +diff -u -p -r1.1.1.8 -r1.10 +--- bgpd/bgpd.h 14 Feb 2010 20:19:57 -0000 1.1.1.8 ++++ bgpd/bgpd.h 14 Feb 2010 19:53:36 -0000 1.10 @@ -1,4 +1,4 @@ --/* $OpenBSD: bgpd.h,v 1.222 2008/01/23 08:11:32 claudio Exp $ */ -+/* $OpenBSD: bgpd.h,v 1.243 2009/07/23 14:53:18 claudio Exp $ */ +-/* $OpenBSD: bgpd.h,v 1.241 2009/06/12 16:42:53 claudio Exp $ */ ++/* $OpenBSD: bgpd.h,v 1.252 2010/01/13 06:02:37 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> -@@ -30,9 +30,16 @@ +@@ -30,11 +30,16 @@ #include <poll.h> #include <stdarg.h> +-#include <imsg.h> +#if defined(__FreeBSD__) /* compat */ +#include "openbsd-compat.h" +#endif /* defined(__FreeBSD__) */ +#include "imsg.h" -+ + #define BGP_VERSION 4 #define BGP_PORT 179 +#ifndef CONFFILE @@ -29,223 +30,137 @@ diff -u -p -r1.1.1.1 -r1.8 #define BGPD_USER "_bgpd" #define PEER_DESCR_LEN 32 #define PFTABLE_LEN 16 -@@ -40,6 +47,8 @@ +@@ -42,8 +47,6 @@ #define IPSEC_ENC_KEY_LEN 32 #define IPSEC_AUTH_KEY_LEN 20 -+#define ASNUM_MAX 0xffffffff -+ +-#define ASNUM_MAX 0xffffffff +- #define MAX_PKTSIZE 4096 #define MIN_HOLDTIME 3 #define READ_BUF_SIZE 65535 -@@ -85,8 +94,8 @@ - - /* - * Limit the number of control messages generated by the RDE and queued in -- * session enigine. The RDE limit defines how many imsg are generated in -- * on poll round. The if the SE limit is hit the RDE control socket will no -+ * session engine. The RDE limit defines how many imsg are generated in -+ * one poll round. Then if the SE limit is hit the RDE control socket will no - * longer be polled. - */ - #define RDE_RUNNER_ROUNDS 100 -@@ -105,21 +114,6 @@ enum reconf_action { +@@ -109,18 +112,74 @@ enum reconf_action { RECONF_DELETE }; --struct buf { -- TAILQ_ENTRY(buf) entry; -- u_char *buf; -- size_t size; -- size_t wpos; -- size_t rpos; -- int fd; --}; -- --struct msgbuf { -- TAILQ_HEAD(, buf) bufs; -- u_int32_t queued; -- int fd; --}; -- ++/* Address Family Numbers as per RFC 1700 */ ++#define AFI_UNSPEC 0 ++#define AFI_IPv4 1 ++#define AFI_IPv6 2 ++ ++/* Subsequent Address Family Identifier as per RFC 4760 */ ++#define SAFI_NONE 0 ++#define SAFI_UNICAST 1 ++#define SAFI_MULTICAST 2 ++#define SAFI_MPLS 4 ++#define SAFI_MPLSVPN 128 ++ ++struct aid { ++ u_int16_t afi; ++ sa_family_t af; ++ u_int8_t safi; ++ char *name; ++}; ++ ++extern const struct aid aid_vals[]; ++ ++#define AID_UNSPEC 0 ++#define AID_INET 1 ++#define AID_INET6 2 ++#define AID_VPN_IPv4 3 ++#define AID_MAX 4 ++ ++#define AID_VALS { \ ++ /* afi, af, safii, name */ \ ++ { AFI_UNSPEC, AF_UNSPEC, SAFI_NONE, "unspec"}, \ ++ { AFI_IPv4, AF_INET, SAFI_UNICAST, "IPv4 unicast" }, \ ++ { AFI_IPv6, AF_INET6, SAFI_UNICAST, "IPv6 unicast" }, \ ++ { AFI_IPv4, AF_INET, SAFI_MPLSVPN, "IPv4 vpn" } \ ++} ++ ++#define AID_PTSIZE { \ ++ 0, \ ++ sizeof(struct pt_entry4), \ ++ sizeof(struct pt_entry6), \ ++ sizeof(struct pt_entry_vpn4) \ ++} ++ ++struct vpn4_addr { ++ u_int64_t rd; ++ struct in_addr addr; ++ u_int8_t labelstack[21]; /* max that makes sense */ ++ u_int8_t labellen; ++ u_int8_t pad1; ++ u_int8_t pad2; ++}; ++ ++#define BGP_MPLS_BOS 0x01 ++ struct bgpd_addr { - sa_family_t af; +- sa_family_t af; union { -@@ -169,12 +163,7 @@ struct bgpd_config { - u_int16_t short_as; - u_int16_t holdtime; - u_int16_t min_holdtime; --}; -- --struct buf_read { -- u_char buf[READ_BUF_SIZE]; -- u_char *rptr; -- size_t wpos; -+ u_int16_t connectretry; + struct in_addr v4; + struct in6_addr v6; +- u_int8_t addr8[16]; +- u_int16_t addr16[8]; +- u_int32_t addr32[4]; ++ struct vpn4_addr vpn4; ++ /* maximum size for a prefix is 256 bits */ ++ u_int8_t addr8[32]; ++ u_int16_t addr16[16]; ++ u_int32_t addr32[8]; + } ba; /* 128-bit address */ + u_int32_t scope_id; /* iface scope id for v6 */ ++ u_int8_t aid; + #define v4 ba.v4 + #define v6 ba.v6 ++#define vpn4 ba.vpn4 + #define addr8 ba.addr8 + #define addr16 ba.addr16 + #define addr32 ba.addr32 +@@ -205,11 +264,10 @@ struct peer_auth { }; - enum announce_type { -@@ -235,11 +224,13 @@ struct peer_config { - struct capabilities capabilities; - char group[PEER_DESCR_LEN]; - char descr[PEER_DESCR_LEN]; -+ char rib[PEER_DESCR_LEN]; - char if_depend[IFNAMSIZ]; - char demote_group[IFNAMSIZ]; - u_int32_t id; - u_int32_t groupid; - u_int32_t remote_as; -+ u_int32_t local_as; - u_int32_t max_prefix; - enum announce_type announce_type; - enum enforce_as enforce_as; -@@ -247,6 +238,7 @@ struct peer_config { - u_int16_t max_prefix_restart; - u_int16_t holdtime; - u_int16_t min_holdtime; -+ u_int16_t local_short_as; - u_int8_t template; - u_int8_t remote_masklen; - u_int8_t cloned; -@@ -259,8 +251,13 @@ struct peer_config { - u_int8_t softreconfig_in; - u_int8_t softreconfig_out; - u_int8_t ttlsec; /* TTL security hack */ -+ u_int8_t flags; -+ u_int8_t pad[3]; -+ char lliface[IFNAMSIZ]; + struct capabilities { +- u_int8_t mp_v4; /* multiprotocol extensions, RFC 4760 */ +- u_int8_t mp_v6; +- u_int8_t refresh; /* route refresh, RFC 2918 */ +- u_int8_t restart; /* graceful restart, RFC 4724 */ +- u_int8_t as4byte; /* draft-ietf-idr-as4bytes-13 */ ++ int8_t mp[AID_MAX]; /* multiprotocol extensions, RFC 4760 */ ++ int8_t refresh; /* route refresh, RFC 2918 */ ++ int8_t restart; /* graceful restart, RFC 4724 */ ++ int8_t as4byte; /* draft-ietf-idr-as4bytes-13 */ }; -+#define PEERFLAG_TRANS_AS 0x01 -+ - struct network_config { - struct bgpd_addr prefix; - struct filter_set_head attrset; -@@ -274,54 +271,8 @@ struct network { - TAILQ_ENTRY(network) entry; + struct peer_config { +@@ -248,6 +306,7 @@ struct peer_config { + u_int8_t ttlsec; /* TTL security hack */ + u_int8_t flags; + u_int8_t pad[3]; ++ char lliface[IFNAMSIZ]; }; --/* ipc messages */ -- --#define IMSG_HEADER_SIZE sizeof(struct imsg_hdr) --#define MAX_IMSGSIZE 8192 -- --struct imsg_fd { -- TAILQ_ENTRY(imsg_fd) entry; -- int fd; --}; -- --struct imsgbuf { -- TAILQ_HEAD(fds, imsg_fd) fds; -- struct buf_read r; -- struct msgbuf w; -- int fd; -- pid_t pid; --}; -- - enum imsg_type { - IMSG_NONE, -- IMSG_RECONF_CONF, -- IMSG_RECONF_PEER, -- IMSG_RECONF_FILTER, -- IMSG_RECONF_LISTENER, -- IMSG_RECONF_DONE, -- IMSG_UPDATE, -- IMSG_UPDATE_ERR, -- IMSG_SESSION_ADD, -- IMSG_SESSION_UP, -- IMSG_SESSION_DOWN, -- IMSG_MRT_OPEN, -- IMSG_MRT_REOPEN, -- IMSG_MRT_CLOSE, -- IMSG_KROUTE_CHANGE, -- IMSG_KROUTE_DELETE, -- IMSG_KROUTE6_CHANGE, -- IMSG_KROUTE6_DELETE, -- IMSG_NEXTHOP_ADD, -- IMSG_NEXTHOP_REMOVE, -- IMSG_NEXTHOP_UPDATE, -- IMSG_PFTABLE_ADD, -- IMSG_PFTABLE_REMOVE, -- IMSG_PFTABLE_COMMIT, -- IMSG_NETWORK_ADD, -- IMSG_NETWORK_REMOVE, -- IMSG_NETWORK_FLUSH, -- IMSG_NETWORK_DONE, -- IMSG_FILTER_SET, - IMSG_CTL_END, - IMSG_CTL_RELOAD, - IMSG_CTL_FIB_COUPLE, -@@ -347,23 +298,40 @@ enum imsg_type { + #define PEERFLAG_TRANS_AS 0x01 +@@ -292,6 +351,7 @@ enum imsg_type { IMSG_CTL_SHOW_RIB_MEM, IMSG_CTL_SHOW_TERSE, IMSG_CTL_SHOW_TIMER, -+ IMSG_NETWORK_ADD, -+ IMSG_NETWORK_REMOVE, -+ IMSG_NETWORK_FLUSH, -+ IMSG_NETWORK_DONE, -+ IMSG_FILTER_SET, -+ IMSG_RECONF_CONF, -+ IMSG_RECONF_RIB, -+ IMSG_RECONF_PEER, -+ IMSG_RECONF_FILTER, -+ IMSG_RECONF_LISTENER, -+ IMSG_RECONF_DONE, -+ IMSG_UPDATE, -+ IMSG_UPDATE_ERR, -+ IMSG_SESSION_ADD, -+ IMSG_SESSION_UP, -+ IMSG_SESSION_DOWN, -+ IMSG_MRT_OPEN, -+ IMSG_MRT_REOPEN, -+ IMSG_MRT_CLOSE, -+ IMSG_KROUTE_CHANGE, -+ IMSG_KROUTE_DELETE, -+ IMSG_KROUTE6_CHANGE, -+ IMSG_KROUTE6_DELETE, -+ IMSG_NEXTHOP_ADD, -+ IMSG_NEXTHOP_REMOVE, -+ IMSG_NEXTHOP_UPDATE, -+ IMSG_PFTABLE_ADD, -+ IMSG_PFTABLE_REMOVE, -+ IMSG_PFTABLE_COMMIT, - IMSG_REFRESH, - IMSG_IFINFO, - IMSG_DEMOTE - }; - --struct imsg_hdr { -- u_int32_t peerid; -- pid_t pid; -- enum imsg_type type; -- u_int16_t len; --}; -- --struct imsg { -- struct imsg_hdr hdr; -- void *data; --}; -- - struct demote_msg { - char demote_group[IFNAMSIZ]; - int level; -@@ -424,6 +392,7 @@ struct kroute { - u_int16_t labelid; - u_short ifindex; - u_int8_t prefixlen; -+ u_int8_t priority; - }; - - struct kroute6 { -@@ -433,6 +402,7 @@ struct kroute6 { - u_int16_t labelid; - u_short ifindex; - u_int8_t prefixlen; -+ u_int8_t priority; ++ IMSG_CTL_LOG_VERBOSE, + IMSG_NETWORK_ADD, + IMSG_NETWORK_REMOVE, + IMSG_NETWORK_FLUSH, +@@ -423,8 +483,7 @@ struct kif { + struct session_up { + struct bgpd_addr local_addr; + struct bgpd_addr remote_addr; +- struct capabilities capa_announced; +- struct capabilities capa_received; ++ struct capabilities capa; + u_int32_t remote_bgpid; + u_int16_t short_as; }; - - struct kroute_nexthop { -@@ -473,8 +443,13 @@ struct pftable_msg { +@@ -437,8 +496,13 @@ struct pftable_msg { struct ctl_show_nexthop { struct bgpd_addr addr; @@ -260,73 +175,159 @@ diff -u -p -r1.1.1.1 -r1.8 }; struct ctl_neighbor { -@@ -510,7 +485,7 @@ struct ctl_show_rib { - u_int32_t med; - u_int32_t prefix_cnt; - u_int32_t active_cnt; -- u_int32_t adjrib_cnt; -+ u_int32_t rib_cnt; - u_int16_t aspath_len; - u_int16_t flags; - u_int8_t prefixlen; -@@ -545,6 +520,7 @@ struct filter_community { +@@ -508,6 +572,27 @@ struct filter_community { + int type; }; ++struct filter_extcommunity { ++ u_int8_t type; ++ u_int8_t subtype; /* if extended type */ ++ union { ++ struct ext_as { ++ u_int16_t as; ++ u_int32_t val; ++ } ext_as; ++ struct ext_as4 { ++ u_int32_t as4; ++ u_int16_t val; ++ } ext_as4; ++ struct ext_ip { ++ struct in_addr addr; ++ u_int16_t val; ++ } ext_ip; ++ u_int64_t ext_opaq; /* only 48 bits */ ++ } data; ++}; ++ ++ struct ctl_show_rib_request { -+ char rib[PEER_DESCR_LEN]; + char rib[PEER_DESCR_LEN]; struct ctl_neighbor neighbor; - struct bgpd_addr prefix; - struct filter_as as; -@@ -590,6 +566,7 @@ enum comp_ops { - struct filter_peers { - u_int32_t peerid; - u_int32_t groupid; -+ u_int16_t ribid; +@@ -518,8 +603,8 @@ struct ctl_show_rib_request { + pid_t pid; + u_int16_t flags; + enum imsg_type type; +- sa_family_t af; + u_int8_t prefixlen; ++ u_int8_t aid; }; - /* special community type */ -@@ -644,6 +621,7 @@ TAILQ_HEAD(filter_head, filter_rule); + enum filter_actions { +@@ -585,6 +670,27 @@ struct filter_peers { + #define EXT_COMMUNITY_OSPF_RTR_TYPE 6 /* RFC 4577 */ + #define EXT_COMMUNITY_OSPF_RTR_ID 7 /* RFC 4577 */ + #define EXT_COMMUNITY_BGP_COLLECT 8 /* RFC 4384 */ ++/* other handy defines */ ++#define EXT_COMMUNITY_OPAQUE_MAX 0xffffffffffffULL ++ ++struct ext_comm_pairs { ++ u_int8_t type; ++ u_int8_t subtype; ++ u_int8_t transitive; /* transitive bit needs to be set */ ++}; ++ ++#define IANA_EXT_COMMUNITIES { \ ++ { EXT_COMMUNITY_TWO_AS, EXT_COMMUNITY_ROUTE_TGT, 0 }, \ ++ { EXT_COMMUNITY_TWO_AS, EXT_CUMMUNITY_ROUTE_ORIG, 0 }, \ ++ { EXT_COMMUNITY_TWO_AS, EXT_COMMUNITY_OSPF_DOM_ID, 0 }, \ ++ { EXT_COMMUNITY_TWO_AS, EXT_COMMUNITY_BGP_COLLECT, 0 }, \ ++ { EXT_COMMUNITY_FOUR_AS, EXT_COMMUNITY_ROUTE_TGT, 0 }, \ ++ { EXT_COMMUNITY_FOUR_AS, EXT_CUMMUNITY_ROUTE_ORIG, 0 }, \ ++ { EXT_COMMUNITY_IPV4, EXT_COMMUNITY_ROUTE_TGT, 0 }, \ ++ { EXT_COMMUNITY_IPV4, EXT_CUMMUNITY_ROUTE_ORIG, 0 }, \ ++ { EXT_COMMUNITY_IPV4, EXT_COMMUNITY_OSPF_RTR_ID, 0 }, \ ++ { EXT_COMMUNITY_OPAQUE, EXT_COMMUNITY_OSPF_RTR_TYPE, 0 } \ ++} - struct filter_rule { - TAILQ_ENTRY(filter_rule) entry; -+ char rib[PEER_DESCR_LEN]; - struct filter_peers peer; - struct filter_match match; - struct filter_set_head set; -@@ -697,6 +675,7 @@ struct rrefresh { - struct rde_memstats { - int64_t path_cnt; - int64_t prefix_cnt; -+ int64_t rib_cnt; - int64_t pt4_cnt; - int64_t pt6_cnt; - int64_t nexthop_cnt; -@@ -709,6 +688,15 @@ struct rde_memstats { - int64_t attr_dcnt; + + struct filter_prefix { +@@ -594,7 +700,7 @@ struct filter_prefix { + + struct filter_prefixlen { + enum comp_ops op; +- sa_family_t af; ++ u_int8_t aid; + u_int8_t len_min; + u_int8_t len_max; + }; +@@ -635,10 +741,13 @@ enum action_types { + ACTION_SET_NEXTHOP_SELF, + ACTION_SET_COMMUNITY, + ACTION_DEL_COMMUNITY, ++ ACTION_SET_EXT_COMMUNITY, ++ ACTION_DEL_EXT_COMMUNITY, + ACTION_PFTABLE, + ACTION_PFTABLE_ID, + ACTION_RTLABEL, +- ACTION_RTLABEL_ID ++ ACTION_RTLABEL_ID, ++ ACTION_SET_ORIGIN }; + struct filter_set { +@@ -650,23 +759,31 @@ struct filter_set { + int32_t relative; + struct bgpd_addr nexthop; + struct filter_community community; ++ struct filter_extcommunity ext_community; + char pftable[PFTABLE_LEN]; + char rtlabel[RTLABEL_LEN]; ++ u_int8_t origin; + } action; + enum action_types type; + }; + +-struct rrefresh { +- u_int16_t afi; +- u_int8_t safi; +struct rde_rib { + SIMPLEQ_ENTRY(rde_rib) entry; + char name[PEER_DESCR_LEN]; + u_int16_t id; + u_int16_t flags; -+}; + }; +SIMPLEQ_HEAD(rib_names, rde_rib); +extern struct rib_names ribnames; + - /* Address Family Numbers as per RFC 1700 */ - #define AFI_IPv4 1 - #define AFI_IPv6 2 -@@ -718,11 +706,24 @@ struct rde_memstats { - #define SAFI_NONE 0x00 - #define SAFI_UNICAST 0x01 - #define SAFI_MULTICAST 0x02 -+#define SAFI_MPLS 0x04 - #define SAFI_ALL 0xff ++/* 4-byte magic AS number */ ++#define AS_TRANS 23456 - /* 4-byte magic AS number */ - #define AS_TRANS 23456 + struct rde_memstats { + int64_t path_cnt; + int64_t prefix_cnt; + int64_t rib_cnt; +- int64_t pt4_cnt; +- int64_t pt6_cnt; ++ int64_t pt_cnt[AID_MAX]; + int64_t nexthop_cnt; + int64_t aspath_cnt; + int64_t aspath_size; +@@ -677,28 +794,17 @@ struct rde_memstats { + int64_t attr_dcnt; + }; +-struct rde_rib { +- SIMPLEQ_ENTRY(rde_rib) entry; +- char name[PEER_DESCR_LEN]; +- u_int16_t id; +- u_int16_t flags; +-}; +-SIMPLEQ_HEAD(rib_names, rde_rib); +-extern struct rib_names ribnames; +- +-/* Address Family Numbers as per RFC 1700 */ +-#define AFI_IPv4 1 +-#define AFI_IPv6 2 +-#define AFI_ALL 0xffff +- +-/* Subsequent Address Family Identifier as per RFC 4760 */ +-#define SAFI_NONE 0x00 +-#define SAFI_UNICAST 0x01 +-#define SAFI_MULTICAST 0x02 +-#define SAFI_ALL 0xff +- +-/* 4-byte magic AS number */ +-#define AS_TRANS 23456 +/* macros for IPv6 link-local address */ +#if defined(__KAME__) && defined(IPV6_LINKLOCAL_PEER) +#define IN6_LINKLOCAL_IFINDEX(addr) \ @@ -338,77 +339,34 @@ diff -u -p -r1.1.1.1 -r1.8 + (addr).s6_addr[3] = (index) & 0xff; \ + } while (0) +#endif -+ + /* prototypes */ /* bgpd.c */ - void send_nexthop_update(struct kroute_nexthop *); -@@ -730,18 +731,6 @@ void send_imsg_session(int, pid_t, voi - int bgpd_redistribute(int, struct kroute *, struct kroute6 *); - int bgpd_filternexthop(struct kroute *, struct kroute6 *); +@@ -709,6 +815,7 @@ int bgpd_filternexthop(struct kroute * --/* buffer.c */ --struct buf *buf_open(size_t); --struct buf *buf_grow(struct buf *, size_t); --int buf_add(struct buf *, const void *, size_t); --void *buf_reserve(struct buf *, size_t); --int buf_close(struct msgbuf *, struct buf *); --int buf_write(int, struct buf *); --void buf_free(struct buf *); --void msgbuf_init(struct msgbuf *); --void msgbuf_clear(struct msgbuf *); --int msgbuf_write(struct msgbuf *); -- /* log.c */ void log_init(int); ++void log_verbose(int); void vlog(int, const char *, va_list); -@@ -760,19 +749,6 @@ int cmdline_symset(char *); - /* config.c */ - int host(const char *, struct bgpd_addr *, u_int8_t *); - --/* imsg.c */ --void imsg_init(struct imsgbuf *, int); --int imsg_read(struct imsgbuf *); --int imsg_get(struct imsgbuf *, struct imsg *); --int imsg_compose(struct imsgbuf *, enum imsg_type, u_int32_t, pid_t, int, -- const void *, u_int16_t); --struct buf *imsg_create(struct imsgbuf *, enum imsg_type, u_int32_t, pid_t, -- u_int16_t); --int imsg_add(struct buf *, const void *, u_int16_t); --int imsg_close(struct imsgbuf *, struct buf *); --void imsg_free(struct imsg *); --int imsg_get_fd(struct imsgbuf *); -- - /* kroute.c */ - int kr_init(int, u_int); - int kr_change(struct kroute_label *); -@@ -788,10 +764,7 @@ void kr_nexthop_delete(struct bgpd_add - void kr_show_route(struct imsg *); - void kr_ifinfo(char *); - int kr_reload(void); --in_addr_t prefixlen2mask(u_int8_t); - struct in6_addr *prefixlen2mask6(u_int8_t prefixlen); --void inet6applymask(struct in6_addr *, const struct in6_addr *, -- int); - - /* control.c */ - void control_cleanup(const char *); -@@ -806,6 +779,10 @@ int pftable_addr_remove(struct pftable_m - int pftable_commit(void); - - /* name2id.c */ -+u_int16_t rib_name2id(const char *); -+const char *rib_id2name(u_int16_t); -+void rib_unref(u_int16_t); -+void rib_ref(u_int16_t); - u_int16_t rtlabel_name2id(const char *); - const char *rtlabel_id2name(u_int16_t); - void rtlabel_unref(u_int16_t); -@@ -829,5 +806,8 @@ const char *log_as(u_int32_t); + void log_peer_warn(const struct peer_config *, const char *, ...); + void log_peer_warnx(const struct peer_config *, const char *, ...); +@@ -779,11 +886,19 @@ const char *log_addr(const struct bgpd_a + const char *log_in6addr(const struct in6_addr *); + const char *log_sockaddr(struct sockaddr *); + const char *log_as(u_int32_t); ++const char *log_ext_subtype(u_int8_t); int aspath_snprint(char *, size_t, void *, u_int16_t); int aspath_asprint(char **, void *, u_int16_t); size_t aspath_strlen(void *, u_int16_t); -+in_addr_t prefixlen2mask(u_int8_t); -+void inet6applymask(struct in6_addr *, const struct in6_addr *, -+ int); + in_addr_t prefixlen2mask(u_int8_t); + void inet6applymask(struct in6_addr *, const struct in6_addr *, + int); ++const char *aid2str(u_int8_t); ++int aid2afi(u_int8_t, u_int16_t *, u_int8_t *); ++int afi2aid(u_int16_t, u_int8_t, u_int8_t *); ++sa_family_t aid2af(u_int8_t); ++int af2aid(sa_family_t, u_int8_t, u_int8_t *); ++struct sockaddr *addr2sa(struct bgpd_addr *, u_int16_t); ++void sa2addr(struct sockaddr *, struct bgpd_addr *); #endif /* __BGPD_H__ */ |