]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Set the RCVBUF and SNDBUF sizes to the maximum possible amount to
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 20 May 2015 00:24:42 +0000 (17:24 -0700)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 20 May 2015 00:24:42 +0000 (17:24 -0700)
handle traffic under duress.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Ayan Banerjee <ayan@cumulusnetworks.com>
ospfd/ospf_network.c

index 900a5667d68758cdf5e9452d0e54b955be52d469..2f167a50a5e0fcaf459d675eaf8c00a93dc7b464 100644 (file)
@@ -165,6 +165,9 @@ ospf_sock_init (void)
 {
   int ospf_sock;
   int ret, hincl = 1;
+  int bufsize = (8 * 1024 * 1024);
+  int optval;
+  socklen_t optlen = sizeof(optval);
 
   if ( ospfd_privs.change (ZPRIVS_RAISE) )
     zlog_err ("ospf_sock_init: could not raise privs, %s",
@@ -223,6 +226,39 @@ ospf_sock_init (void)
       zlog_err ("ospf_sock_init: could not lower privs, %s",
                safe_strerror (errno) );
     }
+
+  if ((ret = setsockopt (ospf_sock, SOL_SOCKET, SO_RCVBUF,
+                        &bufsize, sizeof (bufsize))) < 0)
+    {
+      zlog_err ("Couldn't increase raw rbuf size: %s\n", safe_strerror(errno));
+    }
+
+  if ((ret = getsockopt (ospf_sock, SOL_SOCKET, SO_RCVBUF,
+                        &optval, &optlen)) < 0)
+    {
+      zlog_err("getsockopt of SO_RCVBUF failed with error %s\n", safe_strerror(errno));
+    }
+  if (optval < bufsize)
+    {
+      zlog_err("Unable to SO_RCVBUF to %d, set to %d\n", bufsize, optval);
+    }
+
+
+  if ((ret = setsockopt (ospf_sock, SOL_SOCKET, SO_SNDBUF,
+                        &bufsize, sizeof (bufsize))) < 0)
+    {
+      zlog_err ("Couldn't increase raw wbuf size: %s\n", safe_strerror(errno));
+    }
+
+  if ((ret = getsockopt (ospf_sock, SOL_SOCKET, SO_SNDBUF,
+                        &optval, &optlen)) < 0)
+    {
+      zlog_err ("getsockopt of SO_SNDBUF failed with error %s\n", safe_strerror(errno));
+    }
+  if (optval < bufsize)
+    {
+      zlog_err ("Unable to SO_SNDBUF to %d, set to %d\n", bufsize, optval);
+    }
  
   return ospf_sock;
 }