On 13.03.2012 16:51, Bjoern A. Zeeb wrote:
On 13. Mar 2012, at 11:08 , Alexander V. Chernikov wrote:

Author: melifaro
Date: Tue Mar 13 11:08:40 2012
New Revision: 232921
URL: http://svn.freebsd.org/changeset/base/232921

Log:
  Use rt_numfibs variable instead of compile-time RT_NUMFIBS.

Thanks a lot for doing this!
Sorry for doing this for too long.


This will allow us to go ahead and get rid of the mandatory kernel option now.  
I'll try to find my patch from last year and post it for your review.

Are you intending to MFC this?
netflow v9 stuff is still not MFCed to 8/7
(And I forgot 9 contains it). So it should be 2w for 9



Requested by:   bz (a while ago with low prio)
  Reviewed by:    glebius (previous version)
  Approved by:    kib(mentor), ae(mentor)

Modified:
  head/sys/modules/netgraph/netflow/Makefile
  head/sys/netgraph/netflow/netflow.c
  head/sys/netgraph/netflow/ng_netflow.c
  head/sys/netgraph/netflow/ng_netflow.h

Modified: head/sys/modules/netgraph/netflow/Makefile
==============================================================================
--- head/sys/modules/netgraph/netflow/Makefile  Tue Mar 13 10:54:14 2012        
(r232920)
+++ head/sys/modules/netgraph/netflow/Makefile  Tue Mar 13 11:08:40 2012        
(r232921)
@@ -17,8 +17,6 @@ opt_inet6.h:
        echo "#define INET6 1">  ${.TARGET}
.endif

-opt_route.h:
-       echo "#define ROUTETABLES RT_MAXFIBS">  ${.TARGET}
.endif

.include<bsd.kmod.mk>

Modified: head/sys/netgraph/netflow/netflow.c
==============================================================================
--- head/sys/netgraph/netflow/netflow.c Tue Mar 13 10:54:14 2012        
(r232920)
+++ head/sys/netgraph/netflow/netflow.c Tue Mar 13 11:08:40 2012        
(r232921)
@@ -630,7 +630,7 @@ ng_netflow_cache_flush(priv_p priv)
                free(priv->hash6, M_NETFLOW_HASH);
#endif

-       for (i = 0; i<  RT_NUMFIBS; i++) {
+       for (i = 0; i<  priv->maxfibs; i++) {
                if ((fe = priv_to_fib(priv, i)) == NULL)
                        continue;


Modified: head/sys/netgraph/netflow/ng_netflow.c
==============================================================================
--- head/sys/netgraph/netflow/ng_netflow.c      Tue Mar 13 10:54:14 2012        
(r232920)
+++ head/sys/netgraph/netflow/ng_netflow.c      Tue Mar 13 11:08:40 2012        
(r232921)
@@ -225,6 +225,11 @@ ng_netflow_constructor(node_p node)
        /* Initialize private data */
        priv = malloc(sizeof(*priv), M_NETGRAPH, M_WAITOK | M_ZERO);

+       /* Initialize fib data */
+       priv->maxfibs = rt_numfibs;
+       priv->fib_data = malloc(sizeof(fib_export_p) * priv->maxfibs,
+           M_NETGRAPH, M_WAITOK | M_ZERO);
+
        /* Make node and its data point at each other */
        NG_NODE_SET_PRIVATE(node, priv);
        priv->node = node;
@@ -901,8 +906,10 @@ loopend:
        
        /* Check packet FIB */
        fib = M_GETFIB(m);
-       if (fib>= RT_NUMFIBS) {
-               CTR2(KTR_NET, "ng_netflow_rcvdata(): packet fib %d is out of range 
of available fibs: 0 .. %d", fib, RT_NUMFIBS);
+       if (fib>= priv->maxfibs) {
+               CTR2(KTR_NET, "ng_netflow_rcvdata(): packet fib %d is out of "
+                   "range of available fibs: 0 .. %d",
+                   fib, priv->maxfibs);
                goto bypass;
        }

@@ -973,6 +980,7 @@ ng_netflow_rmnode(node_p node)
        NG_NODE_SET_PRIVATE(node, NULL);
        NG_NODE_UNREF(priv->node);

+       free(priv->fib_data, M_NETGRAPH);
        free(priv, M_NETGRAPH);

        return (0);

Modified: head/sys/netgraph/netflow/ng_netflow.h
==============================================================================
--- head/sys/netgraph/netflow/ng_netflow.h      Tue Mar 13 10:54:14 2012        
(r232920)
+++ head/sys/netgraph/netflow/ng_netflow.h      Tue Mar 13 11:08:40 2012        
(r232921)
@@ -413,7 +413,8 @@ struct netflow {
        struct flow_hash_entry  *hash6;
#endif
        /* Multiple FIB support */
-       fib_export_p            fib_data[RT_NUMFIBS]; /* array of pointers to 
fib-specific data */
+       fib_export_p            *fib_data; /* array of pointers to per-fib data 
*/
+       uint16_t                maxfibs; /* number of allocated fibs */

        /*
         * RFC 3954 clause 7.3



--
WBR, Alexander
_______________________________________________
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