Date: Mon, 24 Dec 2012 12:41:36 +0000 (UTC) From: Hiroki Sato <hrs@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r309456 - in head/net/openbgpd: . files Message-ID: <201212241241.qBOCfaZ1005969@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: hrs Date: Mon Dec 24 12:41:36 2012 New Revision: 309456 URL: http://svnweb.freebsd.org/changeset/ports/309456 Log: Update to 5.2.201201209. Modified: head/net/openbgpd/Makefile head/net/openbgpd/files/patch-bgpctl_bgpctl.c head/net/openbgpd/files/patch-bgpd_bgpd.c head/net/openbgpd/files/patch-bgpd_bgpd.conf.5 head/net/openbgpd/files/patch-bgpd_bgpd.h head/net/openbgpd/files/patch-bgpd_buffer.c head/net/openbgpd/files/patch-bgpd_carp.c head/net/openbgpd/files/patch-bgpd_kroute.c head/net/openbgpd/files/patch-bgpd_mrt.c head/net/openbgpd/files/patch-bgpd_parse.y head/net/openbgpd/files/patch-bgpd_printconf.c head/net/openbgpd/files/patch-bgpd_rde.h head/net/openbgpd/files/patch-bgpd_rde_filter.c head/net/openbgpd/files/patch-bgpd_session.c head/net/openbgpd/files/patch-openbsd-compat_imsg-buffer.c head/net/openbgpd/files/patch-openbsd-compat_imsg.c head/net/openbgpd/files/patch-openbsd-compat_imsg.h Modified: head/net/openbgpd/Makefile ============================================================================== --- head/net/openbgpd/Makefile Mon Dec 24 10:52:25 2012 (r309455) +++ head/net/openbgpd/Makefile Mon Dec 24 12:41:36 2012 (r309456) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= openbgpd -PORTVERSION= 5.2.20121014 +PORTVERSION= 5.2.20121209 CATEGORIES= net MASTER_SITES= ${MASTER_SITE_OPENBSD} MASTER_SITE_SUBDIR= OpenBGPD Modified: head/net/openbgpd/files/patch-bgpctl_bgpctl.c ============================================================================== --- head/net/openbgpd/files/patch-bgpctl_bgpctl.c Mon Dec 24 10:52:25 2012 (r309455) +++ head/net/openbgpd/files/patch-bgpctl_bgpctl.c Mon Dec 24 12:41:36 2012 (r309456) @@ -2,12 +2,13 @@ Index: bgpctl/bgpctl.c =================================================================== RCS file: /home/cvs/private/hrs/openbgpd/bgpctl/bgpctl.c,v retrieving revision 1.1.1.7 -diff -u -p -r1.1.1.7 bgpctl.c +retrieving revision 1.10 +diff -u -p -r1.1.1.7 -r1.10 --- bgpctl/bgpctl.c 14 Feb 2010 20:20:14 -0000 1.1.1.7 -+++ bgpctl/bgpctl.c 13 Oct 2012 18:49:31 -0000 ++++ bgpctl/bgpctl.c 8 Dec 2012 20:17:55 -0000 1.10 @@ -1,4 +1,4 @@ -/* $OpenBSD: bgpctl.c,v 1.142 2009/06/06 06:33:15 eric Exp $ */ -+/* $OpenBSD: bgpctl.c,v 1.165 2012/09/12 05:57:10 claudio Exp $ */ ++/* $OpenBSD: bgpctl.c,v 1.167 2012/11/15 19:55:08 sthen Exp $ */ /* * Copyright (c) 2003 Henning Brauer <henning@openbsd.org> @@ -391,7 +392,7 @@ diff -u -p -r1.1.1.7 bgpctl.c p->conf.remote_masklen != 128)) { if (asprintf(&s, "%s/%u", log_addr(&p->conf.remote_addr), -@@ -549,6 +643,10 @@ show_neighbor_msg(struct imsg *imsg, enu +@@ -549,9 +643,20 @@ show_neighbor_msg(struct imsg *imsg, enu printf(", Template"); if (p->conf.cloned) printf(", Cloned"); @@ -402,7 +403,17 @@ diff -u -p -r1.1.1.7 bgpctl.c printf("\n"); if (p->conf.descr[0]) printf(" Description: %s\n", p->conf.descr); -@@ -563,22 +661,24 @@ show_neighbor_msg(struct imsg *imsg, enu ++ if (p->conf.max_prefix) { ++ printf(" Max-prefix: %u", p->conf.max_prefix); ++ if (p->conf.max_prefix_restart) ++ printf(" (restart %u)", ++ p->conf.max_prefix_restart); ++ printf("\n"); ++ } + printf(" BGP version 4, remote router-id %s\n", + inet_ntoa(ina)); + printf(" BGP state = %s", statenames[p->state]); +@@ -563,22 +668,24 @@ show_neighbor_msg(struct imsg *imsg, enu printf(" Last read %s, holdtime %us, keepalive interval %us\n", fmt_timeframe(p->stats.last_read), p->holdtime, p->holdtime/3); @@ -439,7 +450,7 @@ diff -u -p -r1.1.1.7 bgpctl.c if (p->capa.peer.as4byte) printf(" 4-byte AS numbers\n"); } -@@ -633,20 +733,38 @@ show_neighbor_msg(struct imsg *imsg, enu +@@ -633,20 +740,38 @@ show_neighbor_msg(struct imsg *imsg, enu } void @@ -491,7 +502,7 @@ diff -u -p -r1.1.1.7 bgpctl.c } void -@@ -654,17 +772,17 @@ print_neighbor_msgstats(struct peer *p) +@@ -654,17 +779,17 @@ print_neighbor_msgstats(struct peer *p) { printf(" Message statistics:\n"); printf(" %-15s %-10s %-10s\n", "", "Sent", "Received"); @@ -515,7 +526,7 @@ diff -u -p -r1.1.1.7 bgpctl.c p->stats.msg_sent_open + p->stats.msg_sent_notification + p->stats.msg_sent_update + p->stats.msg_sent_keepalive + p->stats.msg_sent_rrefresh, -@@ -673,14 +791,16 @@ print_neighbor_msgstats(struct peer *p) +@@ -673,14 +798,16 @@ print_neighbor_msgstats(struct peer *p) p->stats.msg_rcvd_rrefresh); printf(" Update statistics:\n"); printf(" %-15s %-10s %-10s\n", "", "Sent", "Received"); @@ -535,7 +546,7 @@ diff -u -p -r1.1.1.7 bgpctl.c { printf(" %-20s ", name); -@@ -745,6 +865,12 @@ show_fib_head(void) +@@ -745,6 +872,12 @@ show_fib_head(void) } void @@ -548,7 +559,7 @@ diff -u -p -r1.1.1.7 bgpctl.c show_network_head(void) { printf("flags: S = Static\n"); -@@ -788,56 +914,44 @@ show_fib_flags(u_int16_t flags) +@@ -788,56 +921,44 @@ show_fib_flags(u_int16_t flags) int show_fib_msg(struct imsg *imsg) { @@ -597,10 +608,10 @@ diff -u -p -r1.1.1.7 bgpctl.c + if (imsg->hdr.len < IMSG_HEADER_SIZE + sizeof(*kt)) errx(1, "wrong imsg len"); - k6 = imsg->data; +- +- show_fib_flags(k6->flags); + kt = imsg->data; -- show_fib_flags(k6->flags); -- - if (asprintf(&p, "%s/%u", log_in6addr(&k6->prefix), - k6->prefixlen) == -1) - err(1, NULL); @@ -623,7 +634,7 @@ diff -u -p -r1.1.1.7 bgpctl.c default: break; } -@@ -848,35 +962,70 @@ show_fib_msg(struct imsg *imsg) +@@ -848,35 +969,70 @@ show_fib_msg(struct imsg *imsg) void show_nexthop_head(void) { @@ -712,7 +723,7 @@ diff -u -p -r1.1.1.7 bgpctl.c } printf("\n"); break; -@@ -898,9 +1047,8 @@ show_interface_head(void) +@@ -898,9 +1054,8 @@ show_interface_head(void) "Link state"); } @@ -724,7 +735,7 @@ diff -u -p -r1.1.1.7 bgpctl.c const struct ifmedia_description ifm_type_descriptions[] = IFM_TYPE_DESCRIPTIONS; -@@ -936,36 +1084,36 @@ get_media_descr(int media_type) +@@ -936,36 +1091,36 @@ get_media_descr(int media_type) const char * get_linkstate(int media_type, int link_state) { @@ -783,7 +794,7 @@ diff -u -p -r1.1.1.7 bgpctl.c } int -@@ -982,17 +1130,12 @@ show_interface_msg(struct imsg *imsg) +@@ -982,17 +1137,12 @@ show_interface_msg(struct imsg *imsg) printf("%-15s", k->flags & IFF_UP ? "UP" : ""); if ((ifms_type = ift2ifm(k->media_type)) != 0) @@ -806,7 +817,7 @@ diff -u -p -r1.1.1.7 bgpctl.c printf("\n"); break; case IMSG_CTL_END: -@@ -1008,10 +1151,10 @@ show_interface_msg(struct imsg *imsg) +@@ -1008,10 +1158,10 @@ show_interface_msg(struct imsg *imsg) void show_rib_summary_head(void) { @@ -820,7 +831,7 @@ diff -u -p -r1.1.1.7 bgpctl.c "gateway", "lpref", "med", "aspath origin"); } -@@ -1049,26 +1192,30 @@ print_flags(u_int8_t flags, int sum) +@@ -1049,26 +1199,30 @@ print_flags(u_int8_t flags, int sum) char *p = flagstr; if (sum) { @@ -859,7 +870,7 @@ diff -u -p -r1.1.1.7 bgpctl.c printf(", announced"); } } -@@ -1077,27 +1224,14 @@ int +@@ -1077,27 +1231,14 @@ int show_rib_summary_msg(struct imsg *imsg) { struct ctl_show_rib rib; @@ -888,7 +899,7 @@ diff -u -p -r1.1.1.7 bgpctl.c break; case IMSG_CTL_END: return (1); -@@ -1112,108 +1246,21 @@ int +@@ -1112,108 +1253,21 @@ int show_rib_detail_msg(struct imsg *imsg, int nodescr) { struct ctl_show_rib rib; @@ -1003,7 +1014,7 @@ diff -u -p -r1.1.1.7 bgpctl.c break; case IMSG_CTL_END: printf("\n"); -@@ -1225,67 +1272,128 @@ show_rib_detail_msg(struct imsg *imsg, i +@@ -1225,67 +1279,128 @@ show_rib_detail_msg(struct imsg *imsg, i return (0); } @@ -1182,7 +1193,7 @@ diff -u -p -r1.1.1.7 bgpctl.c } void -@@ -1328,30 +1436,6 @@ show_community(u_char *data, u_int16_t l +@@ -1328,30 +1443,6 @@ show_community(u_char *data, u_int16_t l } } @@ -1213,7 +1224,7 @@ diff -u -p -r1.1.1.7 bgpctl.c void show_ext_community(u_char *data, u_int16_t len) { -@@ -1372,34 +1456,101 @@ show_ext_community(u_char *data, u_int16 +@@ -1372,34 +1463,101 @@ show_ext_community(u_char *data, u_int16 case EXT_COMMUNITY_TWO_AS: memcpy(&as2, data + i + 2, sizeof(as2)); memcpy(&u32, data + i + 4, sizeof(u32)); @@ -1322,7 +1333,7 @@ diff -u -p -r1.1.1.7 bgpctl.c void send_filterset(struct imsgbuf *i, struct filter_set_head *set) { -@@ -1469,6 +1620,183 @@ show_result(struct imsg *imsg) +@@ -1469,6 +1627,183 @@ show_result(struct imsg *imsg) return (1); } @@ -1506,7 +1517,7 @@ diff -u -p -r1.1.1.7 bgpctl.c /* following functions are necessary for imsg framework */ void log_warnx(const char *emsg, ...) -@@ -1495,3 +1823,9 @@ fatal(const char *emsg) +@@ -1495,3 +1830,9 @@ fatal(const char *emsg) { err(1, emsg); } Modified: head/net/openbgpd/files/patch-bgpd_bgpd.c ============================================================================== --- head/net/openbgpd/files/patch-bgpd_bgpd.c Mon Dec 24 10:52:25 2012 (r309455) +++ head/net/openbgpd/files/patch-bgpd_bgpd.c Mon Dec 24 12:41:36 2012 (r309456) @@ -2,13 +2,13 @@ Index: bgpd/bgpd.c =================================================================== RCS file: /home/cvs/private/hrs/openbgpd/bgpd/bgpd.c,v retrieving revision 1.1.1.7 -retrieving revision 1.1.1.11 -diff -u -p -r1.1.1.7 -r1.1.1.11 +retrieving revision 1.1.1.12 +diff -u -p -r1.1.1.7 -r1.1.1.12 --- bgpd/bgpd.c 14 Feb 2010 20:19:57 -0000 1.1.1.7 -+++ bgpd/bgpd.c 13 Oct 2012 18:22:38 -0000 1.1.1.11 ++++ bgpd/bgpd.c 8 Dec 2012 10:37:08 -0000 1.1.1.12 @@ -1,4 +1,4 @@ -/* $OpenBSD: bgpd.c,v 1.148 2009/06/07 00:30:23 claudio Exp $ */ -+/* $OpenBSD: bgpd.c,v 1.168 2011/08/20 19:02:28 sthen Exp $ */ ++/* $OpenBSD: bgpd.c,v 1.169 2012/09/18 09:45:51 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -264,7 +264,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 log_info("Terminating"); return (0); -@@ -452,27 +414,32 @@ send_filterset(struct imsgbuf *i, struct +@@ -452,27 +414,33 @@ send_filterset(struct imsgbuf *i, struct int reconfigure(char *conffile, struct bgpd_config *conf, struct mrt_head *mrt_l, @@ -293,6 +293,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 + &rdom_l)) { log_warnx("config file %s has errors, not reloading", conffile); ++ reconfpending = 0; return (1); } @@ -305,7 +306,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 prepare_listeners(conf); /* start reconfiguration */ -@@ -483,12 +450,6 @@ reconfigure(char *conffile, struct bgpd_ +@@ -483,12 +451,6 @@ reconfigure(char *conffile, struct bgpd_ conf, sizeof(struct bgpd_config)) == -1) return (-1); @@ -318,7 +319,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 TAILQ_FOREACH(la, conf->listen_addrs, entry) { if (imsg_compose(ibuf_se, IMSG_RECONF_LISTENER, 0, 0, la->fd, la, sizeof(struct listen_addr)) == -1) -@@ -496,51 +457,104 @@ reconfigure(char *conffile, struct bgpd_ +@@ -496,51 +458,104 @@ reconfigure(char *conffile, struct bgpd_ la->fd = -1; } @@ -440,7 +441,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 /* mrt changes can be sent out of bound */ mrt_reconfigure(mrt_l); return (0); -@@ -550,8 +564,8 @@ int +@@ -550,8 +565,8 @@ int dispatch_imsg(struct imsgbuf *ibuf, int idx) { struct imsg imsg; @@ -451,7 +452,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 if ((n = imsg_read(ibuf)) == -1) return (-1); -@@ -573,46 +587,39 @@ dispatch_imsg(struct imsgbuf *ibuf, int +@@ -573,46 +588,39 @@ dispatch_imsg(struct imsgbuf *ibuf, int case IMSG_KROUTE_CHANGE: if (idx != PFD_PIPE_ROUTE) log_warnx("route request not from RDE"); @@ -516,7 +517,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 break; case IMSG_PFTABLE_ADD: if (idx != PFD_PIPE_ROUTE) -@@ -646,26 +653,28 @@ dispatch_imsg(struct imsgbuf *ibuf, int +@@ -646,26 +654,28 @@ dispatch_imsg(struct imsgbuf *ibuf, int case IMSG_CTL_RELOAD: if (idx != PFD_PIPE_SESSION) log_warnx("reload request not from SE"); @@ -548,7 +549,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 if (idx != PFD_PIPE_SESSION) log_warnx("kroute request not from SE"); else -@@ -692,6 +701,16 @@ dispatch_imsg(struct imsgbuf *ibuf, int +@@ -692,6 +702,16 @@ dispatch_imsg(struct imsgbuf *ibuf, int carp_demote_set(msg->demote_group, msg->level); } break; @@ -565,7 +566,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 default: break; } -@@ -707,7 +726,7 @@ send_nexthop_update(struct kroute_nextho +@@ -707,7 +727,7 @@ send_nexthop_update(struct kroute_nextho { char *gw = NULL; @@ -574,7 +575,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 if (asprintf(&gw, ": via %s", log_addr(&msg->gateway)) == -1) { log_warn("send_nexthop_update"); -@@ -717,7 +736,7 @@ send_nexthop_update(struct kroute_nextho +@@ -717,7 +737,7 @@ send_nexthop_update(struct kroute_nextho log_info("nexthop %s now %s%s%s", log_addr(&msg->nexthop), msg->valid ? "valid" : "invalid", msg->connected ? ": directly connected" : "", @@ -583,7 +584,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 free(gw); -@@ -733,56 +752,20 @@ send_imsg_session(int type, pid_t pid, v +@@ -733,56 +753,20 @@ send_imsg_session(int type, pid_t pid, v } int @@ -644,7 +645,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.11 } int -@@ -810,3 +793,45 @@ bgpd_filternexthop(struct kroute *kr, st +@@ -810,3 +794,45 @@ bgpd_filternexthop(struct kroute *kr, st return (1); } Modified: head/net/openbgpd/files/patch-bgpd_bgpd.conf.5 ============================================================================== --- head/net/openbgpd/files/patch-bgpd_bgpd.conf.5 Mon Dec 24 10:52:25 2012 (r309455) +++ head/net/openbgpd/files/patch-bgpd_bgpd.conf.5 Mon Dec 24 12:41:36 2012 (r309456) @@ -2,13 +2,13 @@ Index: bgpd/bgpd.conf.5 =================================================================== RCS file: /home/cvs/private/hrs/openbgpd/bgpd/bgpd.conf.5,v retrieving revision 1.1.1.7 -retrieving revision 1.9 -diff -u -p -r1.1.1.7 -r1.9 +retrieving revision 1.10 +diff -u -p -r1.1.1.7 -r1.10 --- bgpd/bgpd.conf.5 14 Feb 2010 20:19:57 -0000 1.1.1.7 -+++ bgpd/bgpd.conf.5 13 Oct 2012 18:36:00 -0000 1.9 ++++ bgpd/bgpd.conf.5 8 Dec 2012 20:17:59 -0000 1.10 @@ -1,4 +1,4 @@ -.\" $OpenBSD: bgpd.conf.5,v 1.94 2009/06/07 00:31:22 claudio Exp $ -+.\" $OpenBSD: bgpd.conf.5,v 1.120 2012/07/07 08:22:57 claudio Exp $ ++.\" $OpenBSD: bgpd.conf.5,v 1.122 2012/11/13 09:47:20 claudio Exp $ .\" .\" Copyright (c) 2004 Claudio Jeker <claudio@openbsd.org> .\" Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -17,7 +17,7 @@ diff -u -p -r1.1.1.7 -r1.9 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: June 7 2009 $ -+.Dd $Mdocdate: July 7 2012 $ ++.Dd $Mdocdate: November 13 2012 $ .Dt BGPD.CONF 5 .Os .Sh NAME @@ -249,7 +249,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Xc If set to .Ic yes , -@@ -376,6 +409,111 @@ to EBGP neighbors are not prepended with +@@ -376,6 +409,110 @@ to EBGP neighbors are not prepended with The default is .Ic no . .El @@ -356,12 +356,11 @@ diff -u -p -r1.1.1.7 -r1.9 +Whereas +.Ar local +can be chosen by the local operator. -+.Pp +.El .Sh NEIGHBORS AND GROUPS .Xr bgpd 8 establishes TCP connections to other BGP speakers called -@@ -470,21 +608,35 @@ The default for IBGP peers is +@@ -470,21 +607,35 @@ The default for IBGP peers is .Pp .It Xo .Ic announce @@ -403,7 +402,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Xc If set to .Ic no , -@@ -493,6 +645,29 @@ This can be helpful to connect to old or +@@ -493,6 +644,29 @@ This can be helpful to connect to old or The default is .Ic yes . .Pp @@ -433,7 +432,7 @@ diff -u -p -r1.1.1.7 -r1.9 .It Ic demote Ar group Increase the .Xr carp 4 -@@ -504,7 +679,7 @@ The demotion counter will be increased a +@@ -504,7 +678,7 @@ The demotion counter will be increased a .Xr bgpd 8 starts and decreased 60 seconds after the session went to state @@ -442,7 +441,7 @@ diff -u -p -r1.1.1.7 -r1.9 For neighbors added at runtime, the demotion counter is only increased after the session has been .Em ESTABLISHED -@@ -548,8 +723,8 @@ Do not start the session when bgpd comes +@@ -548,8 +722,8 @@ Do not start the session when bgpd comes .Pp .It Xo .Ic dump @@ -453,7 +452,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Ar file Op Ar timeout .Xc Do a peer specific MRT dump. -@@ -564,7 +739,7 @@ section in +@@ -564,7 +738,7 @@ section in .Pp .It Xo .Ic enforce neighbor-as @@ -462,7 +461,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Xc If set to .Ic yes , -@@ -589,10 +764,16 @@ Inherited from the global configuration +@@ -589,10 +763,16 @@ Inherited from the global configuration Set the minimal acceptable holdtime. Inherited from the global configuration if not given. .Pp @@ -481,7 +480,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Ic spi Ar spi-number authspec Op Ar encspec .Xc Enable IPsec with static keying. -@@ -627,7 +808,7 @@ Keys must be given in hexadecimal format +@@ -627,7 +807,7 @@ Keys must be given in hexadecimal format .Pp .It Xo .Ic ipsec @@ -490,7 +489,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Ic ike .Xc Enable IPsec with dynamic keying. -@@ -639,11 +820,11 @@ is responsible for managing the session +@@ -639,11 +819,11 @@ is responsible for managing the session With .Xr isakmpd 8 , it is sufficient to copy the peer's public key, found in @@ -504,7 +503,7 @@ diff -u -p -r1.1.1.7 -r1.9 The local public key must be copied to the peer in the same way. As .Xr bgpd 8 -@@ -698,11 +879,11 @@ Do not attempt to actively open a TCP co +@@ -698,11 +878,11 @@ Do not attempt to actively open a TCP co .It Ic remote-as Ar as-number Set the AS number of the remote system. .Pp @@ -518,7 +517,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Em route-reflector for this neighbor. An optional cluster ID can be specified; otherwise the BGP ID will be used. -@@ -732,8 +913,8 @@ These sets are rewritten into filter rul +@@ -732,8 +912,8 @@ These sets are rewritten into filter rul .Pp .It Xo .Ic softreconfig @@ -529,7 +528,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Xc Turn soft reconfiguration on or off for the specified direction. If soft reconfiguration is turned on, filter changes will be applied on -@@ -760,7 +941,7 @@ tcp md5sig key deadbeef +@@ -760,7 +940,7 @@ tcp md5sig key deadbeef .Pp .It Xo .Ic transparent-as @@ -538,7 +537,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Xc If set to .Ic yes , -@@ -772,7 +953,7 @@ setting. +@@ -772,7 +952,7 @@ setting. .Pp .It Xo .Ic ttl-security @@ -547,7 +546,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Xc Enable or disable ttl-security. When enabled, -@@ -849,6 +1030,10 @@ is matched against a part of the +@@ -849,6 +1029,10 @@ is matched against a part of the .Em AS path specified by the .Ar as-type . @@ -558,7 +557,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Ar as-type is one of the following operators: .Pp -@@ -917,7 +1102,32 @@ may be set to +@@ -917,7 +1101,32 @@ may be set to which is expanded to the current neighbor remote AS number. .Pp .It Xo @@ -592,7 +591,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Ar peer .Xc This rule applies only to -@@ -945,7 +1155,7 @@ if enclosed in curly brackets: +@@ -945,7 +1154,7 @@ if enclosed in curly brackets: deny from { 128.251.16.1, 251.128.16.2, group hojo } .Ed .Pp @@ -601,7 +600,7 @@ diff -u -p -r1.1.1.7 -r1.9 This rule applies only to routes matching the stated address family. The address family needs to be set only in rules that use .Ic prefixlen -@@ -953,6 +1163,24 @@ without specifying a +@@ -953,6 +1162,37 @@ without specifying a .Ic prefix beforehand. .Pp @@ -623,10 +622,23 @@ diff -u -p -r1.1.1.7 -r1.9 +.Ar len +times. +.Pp ++.It Ic nexthop Ar address ++This rule applies only to ++.Em UPDATES ++where the nexthop is equal to ++.Ar address . ++The ++.Ar address ++can be set to ++.Em neighbor ++in which case the nexthop is compared against the address of the neighbor. ++Nexthop filtering is not supported on locally announced networks and one must ++take into consideration previous rules overwriting nexthops. ++.Pp .It Xo .Ic prefix .Ar address Ns Li / Ns Ar len -@@ -1028,6 +1256,12 @@ matches a rule which has the +@@ -1028,6 +1268,12 @@ matches a rule which has the option set, this rule is considered the last matching rule, and evaluation of subsequent rules is skipped. .Pp @@ -639,7 +651,7 @@ diff -u -p -r1.1.1.7 -r1.9 .It Ic set Ar attribute ... All matching rules can set the .Em AS path attributes -@@ -1079,6 +1313,48 @@ Alternately, well-known communities may +@@ -1079,6 +1325,48 @@ Alternately, well-known communities may or .Ic NO_PEER . .Pp @@ -688,7 +700,7 @@ diff -u -p -r1.1.1.7 -r1.9 .It Ic localpref Ar number Set the .Em LOCAL_PREF -@@ -1108,6 +1384,20 @@ otherwise it will be set to +@@ -1108,6 +1396,20 @@ otherwise it will be set to .Ar number . .Pp .It Xo @@ -709,7 +721,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Ic nexthop .Sm off .Po Ar address \*(Ba -@@ -1157,9 +1447,8 @@ times to the +@@ -1157,9 +1459,8 @@ times to the .Em AS path . .Pp .It Ic rtlabel Ar label @@ -721,7 +733,7 @@ diff -u -p -r1.1.1.7 -r1.9 .Pp .It Ic weight Ar number The -@@ -1181,8 +1470,8 @@ For prefixes with equally long paths, th +@@ -1181,8 +1482,8 @@ For prefixes with equally long paths, th is selected. .El .Sh FILES Modified: head/net/openbgpd/files/patch-bgpd_bgpd.h ============================================================================== --- head/net/openbgpd/files/patch-bgpd_bgpd.h Mon Dec 24 10:52:25 2012 (r309455) +++ head/net/openbgpd/files/patch-bgpd_bgpd.h Mon Dec 24 12:41:36 2012 (r309456) @@ -2,13 +2,13 @@ Index: bgpd/bgpd.h =================================================================== RCS file: /home/cvs/private/hrs/openbgpd/bgpd/bgpd.h,v retrieving revision 1.1.1.8 -retrieving revision 1.13 -diff -u -p -r1.1.1.8 -r1.13 +retrieving revision 1.14 +diff -u -p -r1.1.1.8 -r1.14 --- bgpd/bgpd.h 14 Feb 2010 20:19:57 -0000 1.1.1.8 -+++ bgpd/bgpd.h 13 Oct 2012 18:36:00 -0000 1.13 ++++ bgpd/bgpd.h 8 Dec 2012 20:17:59 -0000 1.14 @@ -1,4 +1,4 @@ -/* $OpenBSD: bgpd.h,v 1.241 2009/06/12 16:42:53 claudio Exp $ */ -+/* $OpenBSD: bgpd.h,v 1.272 2012/09/18 09:45:51 claudio Exp $ */ ++/* $OpenBSD: bgpd.h,v 1.273 2012/09/18 10:10:00 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -463,13 +463,13 @@ diff -u -p -r1.1.1.8 -r1.13 u_int32_t as; + u_int16_t flags; + enum as_spec type; -+}; -+ + }; + +struct filter_aslen { + u_int aslen; + enum aslen_spec type; - }; - ++}; ++ +#define AS_FLAG_NEIGHBORAS 0x01 + struct filter_community { @@ -477,8 +477,8 @@ diff -u -p -r1.1.1.8 -r1.13 - int type; + int as; + int type; -+}; -+ + }; + +struct filter_extcommunity { + u_int16_t flags; + u_int8_t type; @@ -498,8 +498,8 @@ diff -u -p -r1.1.1.8 -r1.13 + } ext_ip; + u_int64_t ext_opaq; /* only 48 bits */ + } data; - }; - ++}; ++ + struct ctl_show_rib_request { char rib[PEER_DESCR_LEN]; @@ -543,8 +543,17 @@ diff -u -p -r1.1.1.8 -r1.13 struct filter_prefix { -@@ -594,16 +757,18 @@ struct filter_prefix { +@@ -592,18 +755,28 @@ struct filter_prefix { + u_int8_t len; + }; ++struct filter_nexthop { ++ struct bgpd_addr addr; ++ u_int8_t flags; ++#define FILTER_NEXTHOP_ADDR 1 ++#define FILTER_NEXTHOP_NEIGHBOR 2 ++}; ++ struct filter_prefixlen { enum comp_ops op; - sa_family_t af; @@ -560,6 +569,7 @@ diff -u -p -r1.1.1.8 -r1.13 - struct filter_community community; + struct filter_prefix prefix; + struct filter_prefixlen prefixlen; ++ struct filter_nexthop nexthop; + struct filter_as as; + struct filter_aslen aslen; + struct filter_community community; @@ -567,7 +577,7 @@ diff -u -p -r1.1.1.8 -r1.13 }; TAILQ_HEAD(filter_head, filter_rule); -@@ -635,10 +800,13 @@ enum action_types { +@@ -635,10 +808,13 @@ enum action_types { ACTION_SET_NEXTHOP_SELF, ACTION_SET_COMMUNITY, ACTION_DEL_COMMUNITY, @@ -582,7 +592,7 @@ diff -u -p -r1.1.1.8 -r1.13 }; struct filter_set { -@@ -650,23 +818,53 @@ struct filter_set { +@@ -650,23 +826,53 @@ struct filter_set { int32_t relative; struct bgpd_addr nexthop; struct filter_community community; @@ -641,7 +651,7 @@ diff -u -p -r1.1.1.8 -r1.13 int64_t nexthop_cnt; int64_t aspath_cnt; int64_t aspath_size; -@@ -677,82 +875,117 @@ struct rde_memstats { +@@ -677,82 +883,117 @@ struct rde_memstats { int64_t attr_dcnt; }; @@ -685,12 +695,12 @@ diff -u -p -r1.1.1.8 -r1.13 }; -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 @@ -812,7 +822,7 @@ diff -u -p -r1.1.1.8 -r1.13 /* name2id.c */ u_int16_t rib_name2id(const char *); -@@ -768,10 +1001,22 @@ const char *pftable_id2name(u_int16_t); +@@ -768,10 +1009,22 @@ const char *pftable_id2name(u_int16_t); void pftable_unref(u_int16_t); void pftable_ref(u_int16_t); @@ -835,7 +845,7 @@ diff -u -p -r1.1.1.8 -r1.13 const char *filterset_name(enum action_types); /* util.c */ -@@ -779,11 +1024,24 @@ const char *log_addr(const struct bgpd_a +@@ -779,11 +1032,24 @@ 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); Modified: head/net/openbgpd/files/patch-bgpd_buffer.c ============================================================================== --- head/net/openbgpd/files/patch-bgpd_buffer.c Mon Dec 24 10:52:25 2012 (r309455) +++ head/net/openbgpd/files/patch-bgpd_buffer.c Mon Dec 24 12:41:36 2012 (r309456) @@ -1,182 +1,39 @@ Index: bgpd/buffer.c =================================================================== -RCS file: bgpd/buffer.c -diff -N bgpd/buffer.c +RCS file: /home/cvs/private/hrs/openbgpd/bgpd/buffer.c,v +retrieving revision 1.1.1.7 +retrieving revision 1.3 +diff -u -p -r1.1.1.7 -r1.3 --- bgpd/buffer.c 14 Feb 2010 20:19:57 -0000 1.1.1.7 -+++ /dev/null 1 Jan 1970 00:00:00 -0000 -@@ -1,305 +0,0 @@ ++++ bgpd/buffer.c 8 Dec 2012 20:17:59 -0000 1.3 +@@ -1,4 +1,4 @@ -/* $OpenBSD: buffer.c,v 1.43 2009/06/06 06:33:15 eric Exp $ */ -- --/* -- * Copyright (c) 2003, 2004 Henning Brauer <henning@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. -- */ -- --#include <sys/param.h> --#include <sys/queue.h> --#include <sys/socket.h> --#include <sys/uio.h> -- --#include <errno.h> --#include <stdlib.h> --#include <string.h> --#include <unistd.h> -- --#include "imsg.h" -- --int buf_realloc(struct buf *, size_t); --void buf_enqueue(struct msgbuf *, struct buf *); --void buf_dequeue(struct msgbuf *, struct buf *); -- --struct buf * --buf_open(size_t len) --{ -- struct buf *buf; -- -- if ((buf = calloc(1, sizeof(struct buf))) == NULL) -- return (NULL); -- if ((buf->buf = malloc(len)) == NULL) { -- free(buf); -- return (NULL); -- } -- buf->size = buf->max = len; -- buf->fd = -1; -- -- return (buf); --} -- --struct buf * --buf_dynamic(size_t len, size_t max) --{ -- struct buf *buf; -- -- if (max < len) -- return (NULL); -- -- if ((buf = buf_open(len)) == NULL) -- return (NULL); -- -- if (max > 0) -- buf->max = max; -- -- return (buf); --} -- --int --buf_realloc(struct buf *buf, size_t len) --{ -- u_char *b; -- -- /* on static buffers max is eq size and so the following fails */ -- if (buf->wpos + len > buf->max) { -- errno = ENOMEM; -- return (-1); -- } -- -- b = realloc(buf->buf, buf->wpos + len); -- if (b == NULL) -- return (-1); -- buf->buf = b; -- buf->size = buf->wpos + len; -- -- return (0); --} -- --int --buf_add(struct buf *buf, const void *data, size_t len) --{ -- if (buf->wpos + len > buf->size) -- if (buf_realloc(buf, len) == -1) -- return (-1); -- -- memcpy(buf->buf + buf->wpos, data, len); -- buf->wpos += len; -- return (0); --} -- --void * --buf_reserve(struct buf *buf, size_t len) --{ -- void *b; -- -- if (buf->wpos + len > buf->size) -- if (buf_realloc(buf, len) == -1) -- return (NULL); -- -- b = buf->buf + buf->wpos; -- buf->wpos += len; -- return (b); --} -- --void * --buf_seek(struct buf *buf, size_t pos, size_t len) --{ -- /* only allowed to seek in already written parts */ -- if (pos + len > buf->wpos) -- return (NULL); -- -- return (buf->buf + pos); --} -- --size_t --buf_size(struct buf *buf) --{ -- return (buf->wpos); --} -- --size_t --buf_left(struct buf *buf) --{ -- return (buf->max - buf->wpos); --} -- --void --buf_close(struct msgbuf *msgbuf, struct buf *buf) --{ -- buf_enqueue(msgbuf, buf); --} -- --int --buf_write(struct msgbuf *msgbuf) --{ -- struct iovec iov[IOV_MAX]; ++/* $OpenBSD: buffer.c,v 1.44 2009/07/23 18:58:42 eric Exp $ */ + + /* + * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> +@@ -144,7 +144,7 @@ int + buf_write(struct msgbuf *msgbuf) + { + struct iovec iov[IOV_MAX]; - struct buf *buf, *next; -- unsigned int i = 0; -- ssize_t n; -- -- bzero(&iov, sizeof(iov)); -- TAILQ_FOREACH(buf, &msgbuf->bufs, entry) { -- if (i >= IOV_MAX) -- break; -- iov[i].iov_base = buf->buf + buf->rpos; ++ struct buf *buf; + unsigned int i = 0; + ssize_t n; + +@@ -153,7 +153,7 @@ buf_write(struct msgbuf *msgbuf) + if (i >= IOV_MAX) + break; + iov[i].iov_base = buf->buf + buf->rpos; - iov[i].iov_len = buf->size - buf->rpos; -- i++; -- } -- -- if ((n = writev(msgbuf->fd, iov, i)) == -1) { -- if (errno == EAGAIN || errno == ENOBUFS || -- errno == EINTR) /* try later */ -- return (0); -- else -- return (-1); -- } -- -- if (n == 0) { /* connection closed */ -- errno = 0; -- return (-2); -- } -- ++ iov[i].iov_len = buf->wpos - buf->rpos; + i++; + } + +@@ -170,17 +170,7 @@ buf_write(struct msgbuf *msgbuf) + return (-2); + } + - for (buf = TAILQ_FIRST(&msgbuf->bufs); buf != NULL && n > 0; - buf = next) { - next = TAILQ_NEXT(buf, entry); @@ -188,95 +45,48 @@ diff -N bgpd/buffer.c - n = 0; - } - } -- -- return (0); --} -- --void --buf_free(struct buf *buf) --{ -- free(buf->buf); -- free(buf); --} -- --void --msgbuf_init(struct msgbuf *msgbuf) --{ -- msgbuf->queued = 0; -- msgbuf->fd = -1; -- TAILQ_INIT(&msgbuf->bufs); --} -- --void --msgbuf_clear(struct msgbuf *msgbuf) --{ -- struct buf *buf; -- -- while ((buf = TAILQ_FIRST(&msgbuf->bufs)) != NULL) -- buf_dequeue(msgbuf, buf); *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212241241.qBOCfaZ1005969>