summaryrefslogtreecommitdiff
path: root/net/openbgpd/files/patch-bgpd_bgpd.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/openbgpd/files/patch-bgpd_bgpd.h')
-rw-r--r--net/openbgpd/files/patch-bgpd_bgpd.h590
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__ */