diff options
-rw-r--r-- | lib/ChangeLog | 4 | ||||
-rw-r--r-- | lib/sockopt.c | 12 | ||||
-rw-r--r-- | lib/sockopt.h | 2 | ||||
-rw-r--r-- | ripd/ChangeLog | 6 | ||||
-rw-r--r-- | ripd/ripd.c | 5 | ||||
-rw-r--r-- | ripngd/ChangeLog | 4 | ||||
-rw-r--r-- | ripngd/ripngd.c | 11 |
7 files changed, 33 insertions, 11 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog index 2ce2302f..a4ed5dd9 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2004-09-17 Paul Jakma <paul@dishone.st> + + * sockopt.{c,h}: Add setsockopt_so_recvbuf, for ripd and ripngd. + 2004-09-13 Paul Jakma <paul@dishone.st> * command.c: Update the copyright string in the default motd. diff --git a/lib/sockopt.c b/lib/sockopt.c index d0b034f5..dbd5df57 100644 --- a/lib/sockopt.c +++ b/lib/sockopt.c @@ -23,6 +23,18 @@ #include "log.h" #include "sockopt.h" +int +setsockopt_so_recvbuf (int sock, int size) +{ + int ret; + + if ( (ret = setsockopt (sock, SOL_SOCKET, SO_RCVBUF, (char *) + &size, sizeof (int)) < 0); + zlog_err ("can't setsockopt SO_RCVBUF"); + + return ret; +} + static void * getsockopt_cmsg_data (struct msghdr *msgh, int level, int type) { diff --git a/lib/sockopt.h b/lib/sockopt.h index 8d775cdc..3f4a7050 100644 --- a/lib/sockopt.h +++ b/lib/sockopt.h @@ -22,6 +22,8 @@ #ifndef _ZEBRA_SOCKOPT_H #define _ZEBRA_SOCKOPT_H +int setsockopt_so_recvbuf (int sock, int size); + #ifdef HAVE_IPV6 int setsockopt_ipv6_pktinfo (int, int); int setsockopt_ipv6_checksum (int, int); diff --git a/ripd/ChangeLog b/ripd/ChangeLog index 8ab8a103..1921b789 100644 --- a/ripd/ChangeLog +++ b/ripd/ChangeLog @@ -1,3 +1,9 @@ +2004-09-17 Paul Jakma <paul@dishone.st> + + * ripd.c: set receive buffer to a decent size, some systems have low + defaults. Problem noted and fix suggested by Stephan Schweizer + in [zebra 20967]. + 2004-08-19 Paul Jakma <paul@dishone.st> * rip_interface.c: (rip_interface_multicast_set) get rid diff --git a/ripd/ripd.c b/ripd/ripd.c index af0e186d..5fbb3492 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -42,6 +42,10 @@ #include "ripd/ripd.h" #include "ripd/rip_debug.h" +/* UDP receive buffer size */ +#define RIP_UDP_RCV_BUF 41600 + +/* privileges global */ extern struct zebra_privs_t ripd_privs; /* RIP Structure. */ @@ -1977,6 +1981,7 @@ rip_create_socket () sockopt_broadcast (sock); sockopt_reuseaddr (sock); sockopt_reuseport (sock); + setsockopt_so_recvbuf (sock, RIP_UDP_RCV_BUF); #ifdef RIP_RECVMSG setsockopt_pktinfo (sock); #endif /* RIP_RECVMSG */ diff --git a/ripngd/ChangeLog b/ripngd/ChangeLog index 6b05f3de..64ee7d88 100644 --- a/ripngd/ChangeLog +++ b/ripngd/ChangeLog @@ -1,3 +1,7 @@ +2004-09-17 Paul Jakma <paul@dishone.st> + + * ripngd.c: move setsockopt_so_recvbuf to lib. + 2004-07-23 Hasso Tepper <hasso@estpak.ee> * ripng_interface.c, ripng_nexthop.c: use ifp->mtu6 instead of diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index b1edd6f2..77e47547 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -107,17 +107,6 @@ ripng_info_free (struct ripng_info *rinfo) XFREE (MTYPE_RIPNG_ROUTE, rinfo); } -static int -setsockopt_so_recvbuf (int sock, int size) -{ - int ret; - - ret = setsockopt (sock, SOL_SOCKET, SO_RCVBUF, (char *) &size, sizeof (int)); - if (ret < 0) - zlog (NULL, LOG_ERR, "can't setsockopt SO_RCVBUF"); - return ret; -} - /* Create ripng socket. */ int ripng_make_socket (void) |