Author: hiren
Date: Wed May 20 01:08:01 2015
New Revision: 283136
URL: https://svnweb.freebsd.org/changeset/base/283136

Log:
  Add a new sysctl net.inet.tcp.hostcache.purgenow=1 to expire and purge all
  entries in hostcache immediately.
  
  In collaboration with:        bz, rwatson
  MFC after:    1 week
  Relnotes:     yes
  Sponsored by: Limelight Networks

Modified:
  head/sys/netinet/tcp_hostcache.c

Modified: head/sys/netinet/tcp_hostcache.c
==============================================================================
--- head/sys/netinet/tcp_hostcache.c    Tue May 19 23:53:25 2015        
(r283135)
+++ head/sys/netinet/tcp_hostcache.c    Wed May 20 01:08:01 2015        
(r283136)
@@ -117,6 +117,7 @@ static VNET_DEFINE(struct callout, tcp_h
 static struct hc_metrics *tcp_hc_lookup(struct in_conninfo *);
 static struct hc_metrics *tcp_hc_insert(struct in_conninfo *);
 static int sysctl_tcp_hc_list(SYSCTL_HANDLER_ARGS);
+static int sysctl_tcp_hc_purgenow(SYSCTL_HANDLER_ARGS);
 static void tcp_hc_purge_internal(int);
 static void tcp_hc_purge(void *);
 
@@ -155,6 +156,9 @@ SYSCTL_PROC(_net_inet_tcp_hostcache, OID
     CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_SKIP, 0, 0,
     sysctl_tcp_hc_list, "A", "List of all hostcache entries");
 
+SYSCTL_PROC(_net_inet_tcp_hostcache, OID_AUTO, purgenow,
+    CTLTYPE_INT | CTLFLAG_RW, NULL, 0,
+    sysctl_tcp_hc_purgenow, "I", "Immediately purge all entries");
 
 static MALLOC_DEFINE(M_HOSTCACHE, "hostcache", "TCP hostcache");
 
@@ -696,3 +700,24 @@ tcp_hc_purge(void *arg)
            tcp_hc_purge, arg);
        CURVNET_RESTORE();
 }
+
+/*
+ * Expire and purge all entries in hostcache immediately.
+ */
+static int
+sysctl_tcp_hc_purgenow(SYSCTL_HANDLER_ARGS)
+{
+       int error, val;
+
+       val = 0;
+       error = sysctl_handle_int(oidp, &val, 0, req);
+       if (error || !req->newptr)
+               return (error);
+
+       tcp_hc_purge_internal(1);
+
+       callout_reset(&V_tcp_hc_callout, V_tcp_hostcache.prune * hz,
+           tcp_hc_purge, curvnet);
+
+       return (0);
+}
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to