summaryrefslogtreecommitdiff
path: root/net/openbgpd/files/patch-bgpd_control.c
diff options
context:
space:
mode:
authorHiroki Sato <hrs@FreeBSD.org>2012-10-13 19:40:42 +0000
committerHiroki Sato <hrs@FreeBSD.org>2012-10-13 19:40:42 +0000
commit256f3a3dba73b803a29ae012ff6e136fd72e7294 (patch)
treee533d59b6703e89ff55f633cba2f2285d9b30e49 /net/openbgpd/files/patch-bgpd_control.c
parentUpdate to Wine 1.5.15. This includes the following changes: (diff)
Update to 5.2.20121014.
Feature safe: yes
Diffstat (limited to 'net/openbgpd/files/patch-bgpd_control.c')
-rw-r--r--net/openbgpd/files/patch-bgpd_control.c49
1 files changed, 36 insertions, 13 deletions
diff --git a/net/openbgpd/files/patch-bgpd_control.c b/net/openbgpd/files/patch-bgpd_control.c
index 09c2ac85a831..5d6bade713cc 100644
--- a/net/openbgpd/files/patch-bgpd_control.c
+++ b/net/openbgpd/files/patch-bgpd_control.c
@@ -2,13 +2,13 @@ Index: bgpd/control.c
===================================================================
RCS file: /home/cvs/private/hrs/openbgpd/bgpd/control.c,v
retrieving revision 1.1.1.7
-retrieving revision 1.1.1.9
-diff -u -p -r1.1.1.7 -r1.1.1.9
+retrieving revision 1.1.1.10
+diff -u -p -r1.1.1.7 -r1.1.1.10
--- bgpd/control.c 14 Feb 2010 20:19:57 -0000 1.1.1.7
-+++ bgpd/control.c 12 Jun 2011 10:44:24 -0000 1.1.1.9
++++ bgpd/control.c 13 Oct 2012 18:22:41 -0000 1.1.1.10
@@ -1,4 +1,4 @@
-/* $OpenBSD: control.c,v 1.61 2009/05/05 20:09:19 sthen Exp $ */
-+/* $OpenBSD: control.c,v 1.70 2010/10/29 12:51:53 henning Exp $ */
++/* $OpenBSD: control.c,v 1.71 2012/04/12 17:26:09 claudio Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -21,11 +21,16 @@ diff -u -p -r1.1.1.7 -r1.1.1.9
close(fd);
return (-1);
}
-@@ -123,14 +123,14 @@ control_accept(int listenfd, int restric
+@@ -122,15 +122,18 @@ control_accept(int listenfd, int restric
+ len = sizeof(sun);
if ((connfd = accept(listenfd,
(struct sockaddr *)&sun, &len)) == -1) {
- if (errno != EWOULDBLOCK && errno != EINTR)
+- if (errno != EWOULDBLOCK && errno != EINTR)
- log_warn("session_control_accept");
++ if (errno == ENFILE || errno == EMFILE) {
++ pauseaccept = getmonotime();
++ return (0);
++ } else if (errno != EWOULDBLOCK && errno != EINTR)
+ log_warn("control_accept: accept");
return (0);
}
@@ -39,7 +44,16 @@ diff -u -p -r1.1.1.7 -r1.1.1.9
close(connfd);
return (0);
}
-@@ -191,7 +191,8 @@ control_dispatch_msg(struct pollfd *pfd,
+@@ -182,7 +185,7 @@ control_close(int fd)
+
+ close(c->ibuf.fd);
+ free(c);
+-
++ pauseaccept = 0;
+ return (1);
+ }
+
+@@ -191,7 +194,8 @@ control_dispatch_msg(struct pollfd *pfd,
{
struct imsg imsg;
struct ctl_conn *c;
@@ -49,7 +63,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.9
struct peer *p;
struct ctl_neighbor *neighbor;
struct ctl_show_rib_request *ribreq;
-@@ -305,7 +306,8 @@ control_dispatch_msg(struct pollfd *pfd,
+@@ -305,7 +309,8 @@ control_dispatch_msg(struct pollfd *pfd,
break;
case IMSG_CTL_FIB_COUPLE:
case IMSG_CTL_FIB_DECOUPLE:
@@ -59,7 +73,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.9
break;
case IMSG_CTL_NEIGHBOR_UP:
case IMSG_CTL_NEIGHBOR_DOWN:
-@@ -328,13 +330,19 @@ control_dispatch_msg(struct pollfd *pfd,
+@@ -328,13 +333,19 @@ control_dispatch_msg(struct pollfd *pfd,
control_result(c, CTL_RES_OK);
break;
case IMSG_CTL_NEIGHBOR_DOWN:
@@ -83,7 +97,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.9
control_result(c, CTL_RES_OK);
break;
case IMSG_CTL_NEIGHBOR_RREFRESH:
-@@ -352,13 +360,19 @@ control_dispatch_msg(struct pollfd *pfd,
+@@ -352,13 +363,19 @@ control_dispatch_msg(struct pollfd *pfd,
"wrong length");
break;
case IMSG_CTL_RELOAD:
@@ -106,7 +120,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.9
break;
case IMSG_CTL_SHOW_RIB:
case IMSG_CTL_SHOW_RIB_AS:
-@@ -370,7 +384,7 @@ control_dispatch_msg(struct pollfd *pfd,
+@@ -370,7 +387,7 @@ control_dispatch_msg(struct pollfd *pfd,
neighbor->descr[PEER_DESCR_LEN - 1] = 0;
ribreq->peerid = 0;
p = NULL;
@@ -115,7 +129,7 @@ diff -u -p -r1.1.1.7 -r1.1.1.9
p = getpeerbyaddr(&neighbor->addr);
if (p == NULL) {
control_result(c,
-@@ -397,8 +411,7 @@ control_dispatch_msg(struct pollfd *pfd,
+@@ -397,8 +414,7 @@ control_dispatch_msg(struct pollfd *pfd,
break;
}
if ((imsg.hdr.type == IMSG_CTL_SHOW_RIB_PREFIX)
@@ -125,7 +139,16 @@ diff -u -p -r1.1.1.7 -r1.1.1.9
/* malformed request, must specify af */
control_result(c, CTL_RES_PARSE_ERROR);
break;
-@@ -425,6 +438,20 @@ control_dispatch_msg(struct pollfd *pfd,
+@@ -418,6 +434,8 @@ control_dispatch_msg(struct pollfd *pfd,
+ imsg.data, imsg.hdr.len - IMSG_HEADER_SIZE);
+ break;
+ case IMSG_NETWORK_ADD:
++ case IMSG_NETWORK_ASPATH:
++ case IMSG_NETWORK_ATTR:
+ case IMSG_NETWORK_REMOVE:
+ case IMSG_NETWORK_FLUSH:
+ case IMSG_NETWORK_DONE:
+@@ -425,6 +443,20 @@ control_dispatch_msg(struct pollfd *pfd,
imsg_compose_rde(imsg.hdr.type, 0,
imsg.data, imsg.hdr.len - IMSG_HEADER_SIZE);
break;