Author: luigi
Date: Mon Mar 15 18:09:21 2010
New Revision: 205178
URL: http://svn.freebsd.org/changeset/base/205178

Log:
  small fixes to estimate the buffer size when requesting all pipes/flows.

Modified:
  head/sys/netinet/ipfw/ip_dummynet.c

Modified: head/sys/netinet/ipfw/ip_dummynet.c
==============================================================================
--- head/sys/netinet/ipfw/ip_dummynet.c Mon Mar 15 17:55:46 2010        
(r205177)
+++ head/sys/netinet/ipfw/ip_dummynet.c Mon Mar 15 18:09:21 2010        
(r205178)
@@ -814,15 +814,15 @@ copy_obj(char **start, char *end, void *
 }
 
 /* Specific function to copy a queue.
- * It copies only the common part of a queue, and correctly set
- * the length
+ * Copies only the user-visible part of a queue (which is in
+ * a struct dn_flow), and sets len accordingly.
  */
 static int
 copy_obj_q(char **start, char *end, void *_o, const char *msg, int i)
 {
        struct dn_id *o = _o;
        int have = end - *start;
-       int len = sizeof(struct dn_queue);
+       int len = sizeof(struct dn_flow); /* see above comment */
 
        if (have < len || o->len == 0 || o->type != DN_QUEUE) {
                D("ERROR type %d %s %d have %d need %d",
@@ -1783,9 +1783,13 @@ compute_space(struct dn_id *cmd, struct 
        if (x & DN_C_LINK) {
                need += dn_cfg.schk_count * sizeof(struct dn_link) / 2;
        }
-       /* XXX queue space might be variable */
+       /*
+        * When exporting a queue to userland, only pass up the
+        * struct dn_flow, which is the only visible part.
+        */
+
        if (x & DN_C_QUEUE)
-               need += dn_cfg.queue_count * sizeof(struct dn_queue);
+               need += dn_cfg.queue_count * sizeof(struct dn_flow);
        if (x & DN_C_FLOW)
                need += dn_cfg.si_count * (sizeof(struct dn_flow));
        return need;
_______________________________________________
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