svn commit: r203481 - user/luigi/ipfw3-head/sys/netinet/ipfw

Luigi Rizzo luigi at FreeBSD.org
Thu Feb 4 07:24:14 UTC 2010


Author: luigi
Date: Thu Feb  4 07:24:13 2010
New Revision: 203481
URL: http://svn.freebsd.org/changeset/base/203481

Log:
  portability fix for compilers that do not have C99 initializers

Modified:
  user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h
  user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c
  user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_qfq.c
  user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c
  user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h	Thu Feb  4 07:18:19 2010	(r203480)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h	Thu Feb  4 07:24:13 2010	(r203481)
@@ -40,9 +40,8 @@
  */
 struct dn_alg {
 	uint32_t type;           /* the scheduler type */
-	uint32_t flags;	/* DN_MULTIQUEUE if supports multiple queues */
 	const char *name;   /* scheduler name */
-	int ref_count;      /* XXX number of instances in the system */
+	uint32_t flags;	/* DN_MULTIQUEUE if supports multiple queues */
 
 	/*
 	 * The following define the size of 4 optional data structures
@@ -62,8 +61,6 @@ struct dn_alg {
 
 	size_t q_datalen;	/* per-queue parameters (e.g. S,F) */
 
-	SLIST_ENTRY(dn_alg) next; /* Next scheduler in the list */
-
 	/*
 	 * Methods implemented by the scheduler:
 	 * enqueue	enqueue packet 'm' on scheduler 's', queue 'q'.
@@ -114,8 +111,19 @@ struct dn_alg {
 	int (*free_fsk)(struct dn_fsk *f);
 	int (*new_queue)(struct dn_queue *q);
 	int (*free_queue)(struct dn_queue *q);
+
+	/* run-time fields */
+	int ref_count;      /* XXX number of instances in the system */
+	SLIST_ENTRY(dn_alg) next; /* Next scheduler in the list */
 };
 
+/* MSVC does not support initializers so we need this ugly macro */
+#ifdef _WIN32
+#define _SI(fld)        
+#else
+#define _SI(fld)        fld
+#endif
+
 /*
  * Additionally, dummynet exports some functions and macros
  * to be used by schedulers:

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c	Thu Feb  4 07:18:19 2010	(r203480)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c	Thu Feb  4 07:24:13 2010	(r203481)
@@ -93,15 +93,24 @@ fifo_free_sched(struct dn_sch_inst *si)
  * data structures, and function pointers.
  */
 static struct dn_alg fifo_desc = {
-	.type = DN_SCHED_FIFO,
-	.name = "FIFO",
+	_SI( .type = )  DN_SCHED_FIFO,
+	_SI( .name = )  "FIFO",
+	_SI( .flags = ) 0,
 
-	.si_datalen = sizeof(struct dn_queue),
+	_SI( .schk_datalen = ) 0,
+	_SI( .si_datalen = )  sizeof(struct dn_queue),
+	_SI( .q_datalen = )  0,
 
-	.enqueue = fifo_enqueue,
-	.dequeue = fifo_dequeue,
-	.new_sched = fifo_new_sched,
-	.free_sched = fifo_free_sched,
+	_SI( .enqueue = )  fifo_enqueue,
+	_SI( .dequeue = )  fifo_dequeue,
+	_SI( .config = )  NULL,
+	_SI( .destroy = )  NULL,
+	_SI( .new_sched = )  fifo_new_sched,
+	_SI( .free_sched = )  fifo_free_sched,
+	_SI( .new_fsk = )  NULL,
+	_SI( .free_fsk = )  NULL,
+	_SI( .new_queue = )  NULL,
+	_SI( .free_queue = )  NULL,
 };
 
 DECLARE_DNSCHED_MODULE(dn_fifo, &fifo_desc);

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_qfq.c
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_qfq.c	Thu Feb  4 07:18:19 2010	(r203480)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_qfq.c	Thu Feb  4 07:24:13 2010	(r203481)
@@ -791,21 +791,25 @@ qfq_new_sched(struct dn_sch_inst *si)
  * QFQ scheduler descriptor
  */
 static struct dn_alg qfq_desc = {
-	.type = DN_SCHED_QFQ,
-	.name = "QFQ",
-	.flags = DN_MULTIQUEUE,
-
-	.si_datalen = sizeof(struct qfq_sched),
-	.q_datalen = sizeof(struct qfq_class) - sizeof(struct dn_queue),
-
-	.enqueue = qfq_enqueue,
-	.dequeue = qfq_dequeue,
-
-	.new_sched = qfq_new_sched,
-	.new_fsk = qfq_new_fsk,
-
-	.new_queue = qfq_new_queue,
-	.free_queue = qfq_free_queue,
+	_SI( .type = ) DN_SCHED_QFQ,
+	_SI( .name = ) "QFQ",
+	_SI( .flags = ) DN_MULTIQUEUE,
+
+	_SI( .schk_datalen = ) 0,
+	_SI( .si_datalen = ) sizeof(struct qfq_sched),
+	_SI( .q_datalen = ) sizeof(struct qfq_class) - sizeof(struct dn_queue),
+
+	_SI( .enqueue = ) qfq_enqueue,
+	_SI( .dequeue = ) qfq_dequeue,
+
+	_SI( .config = )  NULL,
+	_SI( .destroy = )  NULL,
+	_SI( .new_sched = ) qfq_new_sched,
+	_SI( .free_sched = )  NULL,
+	_SI( .new_fsk = ) qfq_new_fsk,
+	_SI( .free_fsk = )  NULL,
+	_SI( .new_queue = ) qfq_new_queue,
+	_SI( .free_queue = ) qfq_free_queue,
 };
 
 DECLARE_DNSCHED_MODULE(dn_qfq, &qfq_desc);

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c	Thu Feb  4 07:18:19 2010	(r203480)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c	Thu Feb  4 07:24:13 2010	(r203481)
@@ -276,24 +276,25 @@ rr_free_queue(struct dn_queue *_q)
  * structures and function pointers.
  */
 static struct dn_alg rr_desc = {
-	.type = DN_SCHED_RR,
-	.name = "RR",
-	.flags = DN_MULTIQUEUE,
-
-	.si_datalen = sizeof(struct rr_si),
-	.q_datalen = sizeof(struct rr_queue) - sizeof(struct dn_queue),
-
-	.enqueue = rr_enqueue,
-	.dequeue = rr_dequeue,
-
-	.config = rr_config,
-	.new_sched = rr_new_sched,
-	.free_sched = rr_free_sched,
-
-	.new_fsk = rr_new_fsk,
-
-	.new_queue = rr_new_queue,
-	.free_queue = rr_free_queue,
+	_SI( .type = ) DN_SCHED_RR,
+	_SI( .name = ) "RR",
+	_SI( .flags = ) DN_MULTIQUEUE,
+
+	_SI( .schk_datalen = ) 0,
+	_SI( .si_datalen = ) sizeof(struct rr_si),
+	_SI( .q_datalen = ) sizeof(struct rr_queue) - sizeof(struct dn_queue),
+
+	_SI( .enqueue = ) rr_enqueue,
+	_SI( .dequeue = ) rr_dequeue,
+
+	_SI( .config = ) rr_config,
+	_SI( .destroy = ) NULL,
+	_SI( .new_sched = ) rr_new_sched,
+	_SI( .free_sched = ) rr_free_sched,
+	_SI( .new_fsk = ) rr_new_fsk,
+	_SI( .free_fsk = ) NULL,
+	_SI( .new_queue = ) rr_new_queue,
+	_SI( .free_queue = ) rr_free_queue,
 };
 
 

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c	Thu Feb  4 07:18:19 2010	(r203480)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c	Thu Feb  4 07:24:13 2010	(r203481)
@@ -340,24 +340,29 @@ wf2qp_free_queue(struct dn_queue *q)
  * structures and function pointers.
  */
 static struct dn_alg wf2qp_desc = {
-	.type = DN_SCHED_WF2QP,
-	.name = "WF2Q+",
-	.flags = DN_MULTIQUEUE,
+	_SI( .type = ) DN_SCHED_WF2QP,
+	_SI( .name = ) "WF2Q+",
+	_SI( .flags = ) DN_MULTIQUEUE,
 
 	/* we need extra space in the si and the queue */
-	.si_datalen = sizeof(struct wf2qp_si),
-	.q_datalen = sizeof(struct wf2qp_queue) - sizeof(struct dn_queue),
-
-	.enqueue = wf2qp_enqueue,
-	.dequeue = wf2qp_dequeue,
-
-	.new_sched = wf2qp_new_sched,
-	.free_sched = wf2qp_free_sched,
+	_SI( .schk_datalen = ) 0,
+	_SI( .si_datalen = ) sizeof(struct wf2qp_si),
+	_SI( .q_datalen = ) sizeof(struct wf2qp_queue) -
+				sizeof(struct dn_queue),
+
+	_SI( .enqueue = ) wf2qp_enqueue,
+	_SI( .dequeue = ) wf2qp_dequeue,
+
+	_SI( .config = )  NULL,
+	_SI( .destroy = )  NULL,
+	_SI( .new_sched = ) wf2qp_new_sched,
+	_SI( .free_sched = ) wf2qp_free_sched,
     
-	.new_fsk = wf2qp_new_fsk,
+	_SI( .new_fsk = ) wf2qp_new_fsk,
+	_SI( .free_fsk = )  NULL,
 
-	.new_queue = wf2qp_new_queue,
-	.free_queue = wf2qp_free_queue,
+	_SI( .new_queue = ) wf2qp_new_queue,
+	_SI( .free_queue = ) wf2qp_free_queue,
 };
 
 


More information about the svn-src-user mailing list