diff options
Diffstat (limited to 'net/openbgpd/files/patch-bgpd_printconf.c')
-rw-r--r-- | net/openbgpd/files/patch-bgpd_printconf.c | 439 |
1 files changed, 0 insertions, 439 deletions
diff --git a/net/openbgpd/files/patch-bgpd_printconf.c b/net/openbgpd/files/patch-bgpd_printconf.c deleted file mode 100644 index 9b00e1efa386..000000000000 --- a/net/openbgpd/files/patch-bgpd_printconf.c +++ /dev/null @@ -1,439 +0,0 @@ -Index: bgpd/printconf.c -=================================================================== -RCS file: /home/cvs/private/hrs/openbgpd/bgpd/printconf.c,v -retrieving revision 1.1.1.7 -retrieving revision 1.11 -diff -u -p -r1.1.1.7 -r1.11 ---- bgpd/printconf.c 14 Feb 2010 20:19:57 -0000 1.1.1.7 -+++ bgpd/printconf.c 16 May 2014 00:36:26 -0000 1.11 -@@ -1,4 +1,4 @@ --/* $OpenBSD: printconf.c,v 1.70 2009/06/06 01:10:29 claudio Exp $ */ -+/* $OpenBSD: printconf.c,v 1.88 2012/09/23 09:39:18 claudio Exp $ */ - - /* - * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> -@@ -16,9 +16,13 @@ - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -+#include <limits.h> - #include <stdio.h> - #include <stdlib.h> - #include <string.h> -+#if defined(__FreeBSD__) /* limits.h */ -+#include <limits.h> -+#endif - - #include "bgpd.h" - #include "mrt.h" -@@ -27,14 +31,19 @@ - - void print_op(enum comp_ops); - void print_community(int, int); -+void print_extcommunity(struct filter_extcommunity *); -+void print_origin(u_int8_t); - void print_set(struct filter_set_head *); - void print_mainconf(struct bgpd_config *); -+void print_rdomain_targets(struct filter_set_head *, const char *); -+void print_rdomain(struct rdomain *); -+const char *print_af(u_int8_t); - void print_network(struct network_config *); - void print_peer(struct peer_config *, struct bgpd_config *, - const char *); - const char *print_auth_alg(u_int8_t); - const char *print_enc_alg(u_int8_t); --const char *print_safi(u_int8_t); -+void print_announce(struct peer_config *, const char *); - void print_rule(struct peer *, struct filter_rule *); - const char * mrt_type(enum mrt_type); - void print_mrt(u_int32_t, u_int32_t, const char *, const char *); -@@ -94,6 +103,45 @@ print_community(int as, int type) - } - - void -+print_extcommunity(struct filter_extcommunity *c) -+{ -+ switch (c->type & EXT_COMMUNITY_VALUE) { -+ case EXT_COMMUNITY_TWO_AS: -+ printf("%s %i:%i ", log_ext_subtype(c->subtype), -+ c->data.ext_as.as, c->data.ext_as.val); -+ break; -+ case EXT_COMMUNITY_IPV4: -+ printf("%s %s:%i ", log_ext_subtype(c->subtype), -+ inet_ntoa(c->data.ext_ip.addr), c->data.ext_ip.val); -+ break; -+ case EXT_COMMUNITY_FOUR_AS: -+ printf("%s %s:%i ", log_ext_subtype(c->subtype), -+ log_as(c->data.ext_as4.as4), c->data.ext_as.val); -+ break; -+ case EXT_COMMUNITY_OPAQUE: -+ printf("%s 0x%llx ", log_ext_subtype(c->subtype), -+ (long long unsigned int)c->data.ext_opaq); -+ break; -+ default: -+ printf("0x%x 0x%llx ", c->type, (long long unsigned int)c->data.ext_opaq); -+ break; -+ } -+} -+ -+void -+print_origin(u_int8_t o) -+{ -+ if (o == ORIGIN_IGP) -+ printf("igp "); -+ else if (o == ORIGIN_EGP) -+ printf("egp "); -+ else if (o == ORIGIN_INCOMPLETE) -+ printf("incomplete "); -+ else -+ printf("%u ", o); -+} -+ -+void - print_set(struct filter_set_head *set) - { - struct filter_set *s; -@@ -161,11 +209,23 @@ print_set(struct filter_set_head *set) - case ACTION_RTLABEL: - printf("rtlabel %s ", s->action.rtlabel); - break; -+ case ACTION_SET_ORIGIN: -+ printf("origin "); -+ print_origin(s->action.origin); -+ break; - case ACTION_RTLABEL_ID: - case ACTION_PFTABLE_ID: - /* not possible */ - printf("king bula saiz: config broken"); - break; -+ case ACTION_SET_EXT_COMMUNITY: -+ printf("ext-community "); -+ print_extcommunity(&s->action.ext_community); -+ break; -+ case ACTION_DEL_EXT_COMMUNITY: -+ printf("ext-community delete "); -+ print_extcommunity(&s->action.ext_community); -+ break; - } - } - printf("}"); -@@ -182,6 +242,10 @@ print_mainconf(struct bgpd_config *conf) - printf(" %u", conf->short_as); - ina.s_addr = conf->bgpid; - printf("\nrouter-id %s\n", inet_ntoa(ina)); -+ -+ printf("socket \"%s\"\n", conf->csock); -+ if (conf->rcsock) -+ printf("socket \"%s\" restricted\n", conf->rcsock); - if (conf->holdtime) - printf("holdtime %u\n", conf->holdtime); - if (conf->min_holdtime) -@@ -189,11 +253,6 @@ print_mainconf(struct bgpd_config *conf) - if (conf->connectretry) - printf("connect-retry %u\n", conf->connectretry); - -- if (conf->flags & BGPD_FLAG_NO_FIB_UPDATE) -- printf("fib-update no\n"); -- else -- printf("fib-update yes\n"); -- - if (conf->flags & BGPD_FLAG_NO_EVALUATE) - printf("route-collector yes\n"); - -@@ -214,43 +273,67 @@ print_mainconf(struct bgpd_config *conf) - printf("nexthop qualify via bgp\n"); - if (conf->flags & BGPD_FLAG_NEXTHOP_DEFAULT) - printf("nexthop qualify via default\n"); -+} - -- if (conf->flags & BGPD_FLAG_REDIST_CONNECTED) { -- printf("network inet connected"); -- if (!TAILQ_EMPTY(&conf->connectset)) -- printf(" "); -- print_set(&conf->connectset); -- printf("\n"); -- } -- if (conf->flags & BGPD_FLAG_REDIST_STATIC) { -- printf("network inet static"); -- if (!TAILQ_EMPTY(&conf->staticset)) -- printf(" "); -- print_set(&conf->staticset); -- printf("\n"); -- } -- if (conf->flags & BGPD_FLAG_REDIST6_CONNECTED) { -- printf("network inet6 connected"); -- if (!TAILQ_EMPTY(&conf->connectset6)) -- printf(" "); -- print_set(&conf->connectset6); -- printf("\n"); -- } -- if (conf->flags & BGPD_FLAG_REDIST_STATIC) { -- printf("network inet6 static"); -- if (!TAILQ_EMPTY(&conf->staticset6)) -- printf(" "); -- print_set(&conf->staticset6); -+void -+print_rdomain_targets(struct filter_set_head *set, const char *tgt) -+{ -+ struct filter_set *s; -+ TAILQ_FOREACH(s, set, entry) { -+ printf("\t%s ", tgt); -+ print_extcommunity(&s->action.ext_community); - printf("\n"); - } -- if (conf->rtableid) -- printf("rtable %u\n", conf->rtableid); -+} -+ -+void -+print_rdomain(struct rdomain *r) -+{ -+ printf("rdomain %u {\n", r->rtableid); -+ printf("\tdescr \"%s\"\n", r->descr); -+ if (r->flags & F_RIB_NOFIBSYNC) -+ printf("\tfib-update no\n"); -+ else -+ printf("\tfib-update yes\n"); -+ printf("\tdepend on %s\n", r->ifmpe); -+ -+ printf("\n\t%s\n", log_rd(r->rd)); -+ -+ print_rdomain_targets(&r->export, "export-target"); -+ print_rdomain_targets(&r->import, "import-target"); -+ -+ printf("}\n"); -+} -+ -+const char * -+print_af(u_int8_t aid) -+{ -+ /* -+ * Hack around the fact that aid2str() will return "IPv4 unicast" -+ * for AID_INET. AID_INET and AID_INET6 need special handling and -+ * the other AID should never end up here (at least for now). -+ */ -+ if (aid == AID_INET) -+ return ("inet"); -+ if (aid == AID_INET6) -+ return ("inet6"); -+ return (aid2str(aid)); - } - - void - print_network(struct network_config *n) - { -- printf("network %s/%u", log_addr(&n->prefix), n->prefixlen); -+ switch (n->type) { -+ case NETWORK_STATIC: -+ printf("network %s static", print_af(n->prefix.aid)); -+ break; -+ case NETWORK_CONNECTED: -+ printf("network %s connected", print_af(n->prefix.aid)); -+ break; -+ default: -+ printf("network %s/%u", log_addr(&n->prefix), n->prefixlen); -+ break; -+ } - if (!TAILQ_EMPTY(&n->attrset)) - printf(" "); - print_set(&n->attrset); -@@ -263,8 +346,8 @@ print_peer(struct peer_config *p, struct - char *method; - struct in_addr ina; - -- if ((p->remote_addr.af == AF_INET && p->remote_masklen != 32) || -- (p->remote_addr.af == AF_INET6 && p->remote_masklen != 128)) -+ if ((p->remote_addr.aid == AID_INET && p->remote_masklen != 32) || -+ (p->remote_addr.aid == AID_INET6 && p->remote_masklen != 128)) - printf("%sneighbor %s/%u {\n", c, log_addr(&p->remote_addr), - p->remote_masklen); - else -@@ -281,7 +364,7 @@ print_peer(struct peer_config *p, struct - printf("%s\tmultihop %u\n", c, p->distance); - if (p->passive) - printf("%s\tpassive\n", c); -- if (p->local_addr.af) -+ if (p->local_addr.aid) - printf("%s\tlocal-address %s\n", c, log_addr(&p->local_addr)); - if (p->max_prefix) { - printf("%s\tmax-prefix %u", c, p->max_prefix); -@@ -295,6 +378,12 @@ print_peer(struct peer_config *p, struct - printf("%s\tholdtime min %u\n", c, p->min_holdtime); - if (p->announce_capa == 0) - printf("%s\tannounce capabilities no\n", c); -+ if (p->capabilities.refresh == 0) -+ printf("%s\tannounce refresh no\n", c); -+ if (p->capabilities.grestart.restart == 0) -+ printf("%s\tannounce restart no\n", c); -+ if (p->capabilities.as4byte == 0) -+ printf("%s\tannounce as4byte no\n", c); - if (p->announce_type == ANNOUNCE_SELF) - printf("%s\tannounce self\n", c); - else if (p->announce_type == ANNOUNCE_NONE) -@@ -324,6 +413,10 @@ print_peer(struct peer_config *p, struct - printf("%s\tdepend on \"%s\"\n", c, p->if_depend); - if (p->flags & PEERFLAG_TRANS_AS) - printf("%s\ttransparent-as yes\n", c); -+#if defined(IPV6_LINKLOCAL_PEER) -+ if (p->lliface[0]) -+ printf("%s\tinterface %s\n", c, p->lliface); -+#endif - - if (p->auth.method == AUTH_MD5SIG) - printf("%s\ttcp md5sig\n", c); -@@ -354,8 +447,7 @@ print_peer(struct peer_config *p, struct - if (p->ttlsec) - printf("%s\tttl-security yes\n", c); - -- printf("%s\tannounce IPv4 %s\n", c, print_safi(p->capabilities.mp_v4)); -- printf("%s\tannounce IPv6 %s\n", c, print_safi(p->capabilities.mp_v6)); -+ print_announce(p, c); - - if (p->softreconfig_in == 1) - printf("%s\tsoftreconfig in yes\n", c); -@@ -399,17 +491,14 @@ print_enc_alg(u_int8_t alg) - } - } - --const char * --print_safi(u_int8_t safi) -+void -+print_announce(struct peer_config *p, const char *c) - { -- switch (safi) { -- case SAFI_NONE: -- return ("none"); -- case SAFI_UNICAST: -- return ("unicast"); -- default: -- return ("?"); -- } -+ u_int8_t aid; -+ -+ for (aid = 0; aid < AID_MAX; aid++) -+ if (p->capabilities.mp[aid]) -+ printf("%s\tannounce %s\n", c, aid2str(aid)); - } - - void -@@ -455,14 +544,14 @@ print_rule(struct peer *peer_l, struct f - } else - printf("any "); - -- if (r->match.prefix.addr.af) -+ if (r->match.prefix.addr.aid) - printf("prefix %s/%u ", log_addr(&r->match.prefix.addr), - r->match.prefix.len); - -- if (r->match.prefix.addr.af == 0 && r->match.prefixlen.af) { -- if (r->match.prefixlen.af == AF_INET) -+ if (r->match.prefix.addr.aid == 0 && r->match.prefixlen.aid) { -+ if (r->match.prefixlen.aid == AID_INET) - printf("inet "); -- if (r->match.prefixlen.af == AF_INET6) -+ if (r->match.prefixlen.aid == AID_INET6) - printf("inet6 "); - } - -@@ -479,6 +568,13 @@ print_rule(struct peer *peer_l, struct f - } - } - -+ if (r->match.nexthop.flags) { -+ if (r->match.nexthop.flags == FILTER_NEXTHOP_NEIGHBOR) -+ printf("nexthop neighbor "); -+ else -+ printf("nexthop %s ", log_addr(&r->match.nexthop.addr)); -+ } -+ - if (r->match.as.type) { - if (r->match.as.type == AS_ALL) - printf("AS %s ", log_as(r->match.as.as)); -@@ -492,11 +588,20 @@ print_rule(struct peer *peer_l, struct f - printf("unfluffy-as %s ", log_as(r->match.as.as)); - } - -+ if (r->match.aslen.type) { -+ printf("%s %u ", r->match.aslen.type == ASLEN_MAX ? -+ "max-as-len" : "max-as-seq", r->match.aslen.aslen); -+ } -+ - if (r->match.community.as != COMMUNITY_UNSET) { - printf("community "); - print_community(r->match.community.as, - r->match.community.type); - } -+ if (r->match.ext_community.flags & EXT_COMMUNITY_FLAG_VALID) { -+ printf("ext-community "); -+ print_extcommunity(&r->match.ext_community); -+ } - - print_set(&r->set); - -@@ -513,6 +618,8 @@ mrt_type(enum mrt_type t) - return "table"; - case MRT_TABLE_DUMP_MP: - return "table-mp"; -+ case MRT_TABLE_DUMP_V2: -+ return "table-v2"; - case MRT_ALL_IN: - return "all in"; - case MRT_ALL_OUT: -@@ -541,12 +648,12 @@ print_mrt(u_int32_t pid, u_int32_t gid, - printf("%s%sdump ", prep, prep2); - if (m->rib[0]) - printf("rib %s ", m->rib); -+ printf("%s \"%s\"", mrt_type(m->type), -+ MRT2MC(m)->name); - if (MRT2MC(m)->ReopenTimerInterval == 0) -- printf("%s %s\n", mrt_type(m->type), -- MRT2MC(m)->name); -+ printf("\n"); - else -- printf("%s %s %d\n", mrt_type(m->type), -- MRT2MC(m)->name, -+ printf(" %ld\n", - MRT2MC(m)->ReopenTimerInterval); - } - } -@@ -612,26 +719,34 @@ peer_compare(const void *aa, const void - void - print_config(struct bgpd_config *conf, struct rib_names *rib_l, - struct network_head *net_l, struct peer *peer_l, -- struct filter_head *rules_l, struct mrt_head *mrt_l) -+ struct filter_head *rules_l, struct mrt_head *mrt_l, -+ struct rdomain_head *rdom_l) - { - struct filter_rule *r; - struct network *n; - struct rde_rib *rr; -+ struct rdomain *rd; - - xmrt_l = mrt_l; -- printf("\n"); - print_mainconf(conf); - printf("\n"); -+ TAILQ_FOREACH(n, net_l, entry) -+ print_network(&n->net); -+ printf("\n"); -+ SIMPLEQ_FOREACH(rd, rdom_l, entry) -+ print_rdomain(rd); -+ printf("\n"); - SIMPLEQ_FOREACH(rr, rib_l, entry) { - if (rr->flags & F_RIB_NOEVALUATE) - printf("rde rib %s no evaluate\n", rr->name); -- else -+ else if (rr->flags & F_RIB_NOFIB) - printf("rde rib %s\n", rr->name); -+ else -+ printf("rde rib %s rtable %u fib-update %s\n", rr->name, -+ rr->rtableid, rr->flags & F_RIB_NOFIBSYNC ? -+ "no" : "yes"); - } - printf("\n"); -- TAILQ_FOREACH(n, net_l, entry) -- print_network(&n->net); -- printf("\n"); - print_mrt(0, 0, "", ""); - printf("\n"); - print_groups(conf, peer_l); |