Date: Sun, 24 Jan 2010 20:35:55 +0000 (UTC) From: Luigi Rizzo <luigi@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r202948 - user/luigi/ipfw3-head/sys/netinet/ipfw Message-ID: <201001242035.o0OKZtko036496@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: luigi Date: Sun Jan 24 20:35:55 2010 New Revision: 202948 URL: http://svn.freebsd.org/changeset/base/202948 Log: more testing support Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/Makefile user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c user/luigi/ipfw3-head/sys/netinet/ipfw/dn_test.h user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dummynet.c user/luigi/ipfw3-head/sys/netinet/ipfw/test_dn_sched.c Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/Makefile ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/Makefile Sun Jan 24 20:15:59 2010 (r202947) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/Makefile Sun Jan 24 20:35:55 2010 (r202948) @@ -2,13 +2,16 @@ SCHED_SRCS = test_dn_sched.c SCHED_SRCS += dn_sched_fifo.c +SCHED_SRCS += dn_sched_wf2q.c +SCHED_SRCS += dn_sched_rr.c +SCHED_SRCS += dn_heap.c SCHED_OBJS=$(SCHED_SRCS:.c=.o) HEAP_SRCS = dn_heap.c test_dn_heap.c HEAP_OBJS=$(HEAP_SRCS:.c=.o) -CFLAGS = -I../../ -Wall -Werror -O2 +CFLAGS = -I. -Wall -Werror -O2 -DIPFW TARGETS= test_heap test_sched all: $(TARGETS) Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c Sun Jan 24 20:15:59 2010 (r202947) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c Sun Jan 24 20:35:55 2010 (r202948) @@ -40,7 +40,7 @@ #include <netinet/ipfw/ip_dn_private.h> #include <netinet/ipfw/dn_sched.h> #else -#include "dn_test.h" +#include <dn_test.h> #endif /* Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c Sun Jan 24 20:15:59 2010 (r202947) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c Sun Jan 24 20:35:55 2010 (r202948) @@ -40,7 +40,7 @@ #include <netinet/ipfw/ip_dn_private.h> #include <netinet/ipfw/dn_sched.h> #else -#include "dn_test.h" +#include <dn_test.h> #endif #define DN_SCHED_RR 3 // XXX Where? @@ -198,7 +198,7 @@ static int rr_config(struct new_schk *_schk) { struct rr_schk *schk = (struct rr_schk *)(_schk + 1); - printf("%s called\n", __FUNCTION__); + D("called"); schk->min_q = 1; schk->max_q = 1000; @@ -212,7 +212,7 @@ rr_new_sched(struct new_sch_inst *_si) { struct rr_si *si = (struct rr_si *)(_si + 1); - printf("%s called\n", __FUNCTION__); + D("called"); si->head = si->tail = NULL; return 0; @@ -221,7 +221,7 @@ rr_new_sched(struct new_sch_inst *_si) static int rr_free_sched(struct new_sch_inst *_si) { - printf("%s called\n", __FUNCTION__); + D("called"); /* Nothing to do? */ return 0; } @@ -241,7 +241,7 @@ rr_new_queue(struct new_queue *_q) struct rr_queue *q = (struct rr_queue *)_q; struct rr_schk *schk = (struct rr_schk *)(_q->_si->sched + 1); - printf("%s called, schk->quantum=%d\n", __FUNCTION__, schk->q_bytes); + D("called, schk->quantum=%d", schk->q_bytes); _q->ni.oid.subtype = DN_SCHED_RR; q->quantum = _q->fs->fs.par[0] * schk->q_bytes; @@ -260,7 +260,7 @@ rr_free_queue(struct new_queue *_q) { struct rr_queue *q = (struct rr_queue *)_q; - printf("%s called\n", __FUNCTION__); + D("called"); if (q->status == 1) { struct rr_si *si = (struct rr_si *)(_q->_si + 1); remove_queue_q(q, si); Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c Sun Jan 24 20:15:59 2010 (r202947) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c Sun Jan 24 20:35:55 2010 (r202948) @@ -41,7 +41,7 @@ #include <netinet/ipfw/ip_dn_private.h> #include <netinet/ipfw/dn_sched.h> #else -#include "dn_test.h" +#include <dn_test.h> #endif #ifndef MAX64 Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_test.h ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_test.h Sun Jan 24 20:15:59 2010 (r202947) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_test.h Sun Jan 24 20:35:55 2010 (r202948) @@ -1,20 +1,55 @@ /* - * Header for testing kernel stuff in userland + * userspace compatibility code for dummynet schedulers` */ #ifndef _DN_TEST_H #define _DN_TEST_H +#include <inttypes.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> /* bzero */ +#include <string.h> /* strcmp */ #include <errno.h> #include <inttypes.h> #include <sys/queue.h> #include <sys/time.h> -#define MALLOC_DECLARE(x) -#define KASSERT(x, y) do { if (!(x)) printf y ; exit(0); } while (0) -struct ipfw_flow_id { +#define ND(fmt, args...) do {} while (0) +#define D1(fmt, args...) do {} while (0) +#define D(fmt, args...) fprintf(stderr, "%-10s " fmt "\n", \ + __FUNCTION__, ## args) +#define DX(lev, fmt, args...) do { \ + if (debug > lev) D(fmt, ## args); } while (0) + +#define offsetof(t,m) (int)((&((t *)0L)->m)) + +/* prevent include of other system headers */ +#define _NETINET_IP_VAR_H_ /* ip_fw_args */ +#define _IPFW2_H +#define _SYS_MBUF_H_ + +enum { + DN_QUEUE, +}; + +enum { + DN_SCHED_FIFO, + DN_SCHED_WF2QP, +}; + +struct dn_id { + int type, subtype, len, id; +}; +struct new_fs { + int par[1]; +}; +struct new_sch { +}; +struct dn_flow { + struct dn_id oid; + int length, len_bytes, drops; +}; +struct dn_link { }; struct ip_fw_args { @@ -25,8 +60,16 @@ struct mbuf { int len; } m_pkthdr; struct mbuf *m_nextpkt; - int flow_id; + int flow_id; /* for testing, index of a flow */ + int flowset_id; /* for testing, index of a flowset */ + void *cfg; /* config args */ }; + +#define MALLOC_DECLARE(x) +#define KASSERT(x, y) do { if (!(x)) printf y ; exit(0); } while (0) +struct ipfw_flow_id { +}; + typedef void * module_t; struct _md_t { const char *name; @@ -35,12 +78,38 @@ struct _md_t { }; typedef struct _md_t moduledata_t; #define DECLARE_MODULE(name, b, c, d) \ - moduledata_t *_g_##name = & name##_mod + moduledata_t *_g_##name = & b #define MODULE_DEPEND(a, b, c, d, e) -#include <netinet/ip_dummynet.h> -#include <netinet/ipfw/dn_heap.h> -#include <netinet/ipfw/ip_dn_private.h> -#include <netinet/ipfw/dn_sched.h> +#ifdef IPFW +#include <dn_heap.h> +#include <ip_dn_private.h> +#include <dn_sched.h> +#else +struct new_queue { + struct new_fsk *fs; /* parent flowset. */ + struct new_sch_inst *_si; /* parent sched instance. */ +}; +struct new_schk { +}; +struct new_fsk { + struct new_fs fs; + struct new_schk *sched; +}; +struct new_sch_inst { + struct new_schk *sched; +}; +struct dn_alg { + int type; + const char *name; + void *enqueue, *dequeue; + int q_datalen, si_datalen, schk_datalen; + int (*config)(struct new_schk *); + int (*new_sched)(struct new_sch_inst *); + int (*new_fsk)(struct new_fsk *); + int (*new_queue)(struct new_queue *q); +}; + +#endif #endif /* _DN_TEST_H */ Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h Sun Jan 24 20:15:59 2010 (r202947) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h Sun Jan 24 20:35:55 2010 (r202948) @@ -31,6 +31,20 @@ * internal dummynet APIs. */ +/* debugging support + * use ND() to remove debugging, D() to print a line, + * DX(level, ...) to print above a certain level + * If you redefine D() you are expected to redefine all. + */ +#ifndef D +#define ND(fmt, args...) do {} while (0) +#define D1(fmt, args...) do {} while (0) +#define D(fmt, args...) printf("%-10s " fmt "\n", \ + __FUNCTION__, ## args) +#define DX(lev, fmt, args...) do { \ + if (dn_cfg.debug > lev) D(fmt, ## args); } while (0) +#endif + MALLOC_DECLARE(M_DUMMYNET); #ifndef FREE_PKT Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dummynet.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dummynet.c Sun Jan 24 20:15:59 2010 (r202947) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dummynet.c Sun Jan 24 20:35:55 2010 (r202948) @@ -34,11 +34,6 @@ __FBSDID("$FreeBSD$"); #include "opt_inet6.h" -/* debug support */ -#define ND(fmt, args...) do {} while (0) -#define D(fmt, args...) printf("%s %d: " fmt "\n", \ - __FUNCTION__ , __LINE__ , ## args) - #include <sys/param.h> #include <sys/systm.h> #include <sys/malloc.h> Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/test_dn_sched.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/test_dn_sched.c Sun Jan 24 20:15:59 2010 (r202947) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/test_dn_sched.c Sun Jan 24 20:35:55 2010 (r202948) @@ -3,12 +3,6 @@ */ #include "dn_test.h" -#include <netinet/ip_dummynet.h> -#include <netinet/ipfw/dn_heap.h> -#include <netinet/ipfw/ip_dn_private.h> -#include <netinet/ipfw/dn_sched.h> - -int io_pkt_drop; void m_freem(struct mbuf *m) @@ -76,6 +70,17 @@ drop: q->ni.drops++; return 1; } +int +ipdn_bound_var(int *v, int dflt, int lo, int hi, const char *msg) +{ + if (*v < lo) { + *v = dflt; + } else if (*v > hi) { + *v = hi; + } + return *v; +} + #ifndef NO_MAIN int main(int argc, char *argv[])
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001242035.o0OKZtko036496>