From 0b3acf4f94241905ff36df5c1d9f9f389e45d191 Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 17 Sep 2004 08:39:08 +0000 Subject: 2004-09-17 Paul Jakma * ripngd/ripngd.c: move setsockopt_so_recvbuf to lib. * lib/sockopt.{c,h}: Add setsockopt_so_recvbuf, for ripd and ripngd. * ripd/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]. --- lib/ChangeLog | 4 ++++ lib/sockopt.c | 12 ++++++++++++ lib/sockopt.h | 2 ++ ripd/ChangeLog | 6 ++++++ ripd/ripd.c | 5 +++++ ripngd/ChangeLog | 4 ++++ 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 + + * sockopt.{c,h}: Add setsockopt_so_recvbuf, for ripd and ripngd. + 2004-09-13 Paul Jakma * 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 + + * 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 * 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 + + * ripngd.c: move setsockopt_so_recvbuf to lib. + 2004-07-23 Hasso Tepper * 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) -- cgit v1.2.1