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