svn commit: r202748 - in user/luigi/ipfw3-head: sbin/ipfw sys/netinet sys/netinet/ipfw

Luigi Rizzo luigi at FreeBSD.org
Thu Jan 21 13:21:07 UTC 2010


Author: luigi
Date: Thu Jan 21 13:21:06 2010
New Revision: 202748
URL: http://svn.freebsd.org/changeset/base/202748

Log:
  Replace the 'pipe' prefix/name with 'link' for objects that
  only relate to a communication link.

Modified:
  user/luigi/ipfw3-head/sbin/ipfw/dummynet.c
  user/luigi/ipfw3-head/sys/netinet/ip_dummynet.h
  user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_io.c
  user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h
  user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dummynet.c

Modified: user/luigi/ipfw3-head/sbin/ipfw/dummynet.c
==============================================================================
--- user/luigi/ipfw3-head/sbin/ipfw/dummynet.c	Thu Jan 21 13:15:14 2010	(r202747)
+++ user/luigi/ipfw3-head/sbin/ipfw/dummynet.c	Thu Jan 21 13:21:06 2010	(r202748)
@@ -67,6 +67,7 @@ static struct _s_x dummynet_params[] = {
 	{ "bw",			TOK_BW },
 	{ "bandwidth",		TOK_BW },
 	{ "delay",		TOK_DELAY },
+	{ "link",		TOK_PIPE },
 	{ "pipe",		TOK_PIPE },
 	{ "queue",		TOK_QUEUE },
 	{ "flowset",		TOK_FLOWSET },
@@ -271,11 +272,11 @@ flush_buf(char *buf)
 /*
  * generic list routine. We expect objects in a specific order, i.e.
  * PIPES AND SCHEDULERS:
- *	pipe; scheduler; internal flowset if any; instances
+ *	link; scheduler; internal flowset if any; instances
  *		XXX do we need the queue ?
  * FLOWSETS:
  *	flowset; queues;
- * pipe i (int queue); scheduler i; si(i) { flowsets() : queues }
+ * link i (int queue); scheduler i; si(i) { flowsets() : queues }
  * filt is an array of sorted ranges whithin where we list
  */
 static void
@@ -310,8 +311,8 @@ list_pipes(struct dn_id *oid, struct dn_
 	    list_queue((struct new_inst *)oid);
 	    break;
 
-	case DN_PIPE: {
-	    struct new_pipe *p = (struct new_pipe *)oid;
+	case DN_LINK: {
+	    struct dn_link *p = (struct dn_link *)oid;
 	    double b = p->bandwidth;
 	    char bwbuf[30];
 	    char burst[5 + 7];
@@ -332,7 +333,7 @@ list_pipes(struct dn_id *oid, struct dn_
 		    "", HN_AUTOSCALE, 0) < 0 || co.verbose)
 		sprintf(burst, "%d", (int)p->burst);
 	    sprintf(buf, "%05d: %s %4d ms burst %s",
-		p->pipe_nr, bwbuf, p->delay, burst);
+		p->link_nr, bwbuf, p->delay, burst);
 	    }
 	    break;
 
@@ -366,7 +367,7 @@ list_pipes(struct dn_id *oid, struct dn_
 		}
 
 		q = (struct dn_flow_queue *)(fs+1);
-		sprintf(prefix, "q%05d: weight %d pipe %d ",
+		sprintf(prefix, "q%05d: weight %d sched %d ",
 		    fs->fs_nr, fs->weight, fs->parent_nr);
 		print_flowset_parms(fs, prefix);
 		list_queues(fs, q);
@@ -384,7 +385,7 @@ ipfw_delete_pipe(int pipe_or_queue, int 
 		uint32_t a[1];	/* more if we want a list */
 	} cmd;
 	oid_fill((void *)&cmd, sizeof(cmd), DN_CMD_DELETE, DN_API_VERSION);
-	cmd.oid.subtype = (co.do_pipe == 1) ? DN_PIPE :
+	cmd.oid.subtype = (co.do_pipe == 1) ? DN_LINK :
 		( (co.do_pipe == 2) ? DN_FS : DN_SCH);
 	cmd.a[0] = i;
 	i = do_cmd(IP_DUMMYNET3, &cmd, cmd.oid.len);
@@ -424,7 +425,7 @@ ipfw_delete_pipe(int pipe_or_queue, int 
  * The empirical curve may have both vertical and horizontal lines.
  * Vertical lines represent constant delay for a range of
  * probabilities; horizontal lines correspond to a discontinuty
- * in the delay distribution: the pipe will use the largest delay
+ * in the delay distribution: the link will use the largest delay
  * for a given probability.
  * 
  * To pass the curve to dummynet, we must store the parameters
@@ -750,7 +751,7 @@ ipfw_config_pipe(int ac, char **av)
 	void *par = NULL;
 	struct dn_id *buf, *base;
 	struct new_sch *sch = NULL;
-	struct new_pipe *p = NULL;
+	struct dn_link *p = NULL;
 	struct new_fs *fs = NULL;
 	struct new_profile *pf = NULL;
 	struct ipfw_flow_id *mask = NULL;
@@ -759,10 +760,10 @@ ipfw_config_pipe(int ac, char **av)
 
 	/*
 	 * allocate space for 1 header,
-	 * 1 scheduler, 1 pipe, 1 flowset, 1 profile
+	 * 1 scheduler, 1 link, 1 flowset, 1 profile
 	 */
 	lmax = sizeof(struct dn_id);	/* command header */
-	lmax += sizeof(struct new_sch) + sizeof(struct new_pipe) +
+	lmax += sizeof(struct new_sch) + sizeof(struct dn_link) +
 		sizeof(struct new_fs) +
 		sizeof(struct new_profile);
 
@@ -775,7 +776,7 @@ ipfw_config_pipe(int ac, char **av)
 		errx(EX_USAGE, "need a pipe/flowset/sched number");
 	base = buf = calloc(1, lmax);
 	if (buf == NULL) {
-		errx(1, "no memory for pipe buffer");
+		errx(1, "no memory for buffer");
 	}
 	/* all commands start with a 'CONFIGURE' and a version */
 	o_next(&buf, sizeof(struct dn_id), DN_CMD_CONFIGURE);
@@ -792,10 +793,10 @@ ipfw_config_pipe(int ac, char **av)
 		flags = &sch->flags;
 		/* the FIFO scheduler is created in the kernel from the WFQ one */
 
-		/* the WFQ pipe */
-		p = o_next(&buf, sizeof(*p), DN_PIPE);
-		p->pipe_nr = i;
-		/* the FIFO pipe is created in the kerne from WFQ pipe */
+		/* the WFQ link */
+		p = o_next(&buf, sizeof(*p), DN_LINK);
+		p->link_nr = i;
+		/* the FIFO link is created in the kernel from WFQ link */
 
 		/*
 		 * FIFO flowsets N+i are automatically created for
@@ -1033,14 +1034,14 @@ end_mask:
 			break;
 
 		case TOK_BW:
-			NEED(p, "bw is only for pipe");
+			NEED(p, "bw is only for links");
 			NEED1("bw needs bandwidth or interface\n");
 			read_bandwidth(av[0], &p->bandwidth, NULL, 0);
 			ac--; av++;
 			break;
 
 		case TOK_DELAY:
-			NEED(p, "delay is only for pipes");
+			NEED(p, "delay is only for links");
 			NEED1("delay needs argument 0..10000ms\n");
 			p->delay = strtoul(av[0], NULL, 0);
 			ac--; av++;
@@ -1069,7 +1070,7 @@ end_mask:
 		case TOK_SCHED:
 		case TOK_PIPE:
 			NEED(fs, "pipe/sched");
-			NEED1("pipe needs pipe_number\n");
+			NEED1("pipe/link/sched needs number\n");
 			fs->sched_nr = strtoul(av[0], &end, 0);
 			ac--; av++;
 			break;
@@ -1237,7 +1238,7 @@ dummynet_list(int ac, char *av[], int sh
 	oid.id = DN_API_VERSION;
 	switch (co.do_pipe) {
 	case 1:
-		oid.subtype = DN_PIPE;	/* list pipe */
+		oid.subtype = DN_LINK;	/* list pipe */
 		break;
 	case 2:
 		oid.subtype = DN_FS;	/* list queue */

Modified: user/luigi/ipfw3-head/sys/netinet/ip_dummynet.h
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ip_dummynet.h	Thu Jan 21 13:15:14 2010	(r202747)
+++ user/luigi/ipfw3-head/sys/netinet/ip_dummynet.h	Thu Jan 21 13:21:06 2010	(r202748)
@@ -63,7 +63,7 @@ struct dn_id {
  */
 enum {
 	DN_NONE = 0,
-	DN_PIPE = 1,
+	DN_LINK = 1,
 	DN_FS,
 	DN_SCH,
 	DN_SCH_I,
@@ -92,15 +92,15 @@ enum {	/* user flags */
 	DN_HAVE_MASK	= 0x0001,	/* fs or sched has a mask */
 	DN_NOERROR	= 0x0002,	/* do not report errors */
 	DN_QSIZE_BYTES	= 0x0008,	/* queue size is in bytes */
-	DN_HAS_PROFILE	= 0x0010,	/* a pipe has a profile */
+	DN_HAS_PROFILE	= 0x0010,	/* a link has a profile */
 	DN_IS_RED	= 0x0020,
 	DN_IS_GENTLE_RED= 0x0040,
 };
 
 /*
- * pipe template.
+ * link template.
  */
-struct new_pipe {
+struct dn_link {
 	struct dn_id oid;
 
 	/*
@@ -108,7 +108,7 @@ struct new_pipe {
 	 * The kernel converts this back and forth to bits/tick and ticks.
 	 * XXX what about burst ?
 	 */
-	int32_t		pipe_nr;
+	int32_t		link_nr;
 	int		bandwidth;	/* bit/s or bits/tick.   */
 	int		delay;		/* ms and ticks */
 	uint64_t	burst;		/* scaled. bits*Hz  XXX */
@@ -170,14 +170,14 @@ struct new_sch {
 };
 
 
-/* A delay profile is attached to a pipe */
+/* A delay profile is attached to a link */
 #define	ED_MAX_SAMPLES_NO	1024
 struct new_profile {
 	struct dn_id oid;
 	/* fields to simulate a delay profile */
 #define ED_MAX_NAME_LEN         32
 	char name[ED_MAX_NAME_LEN];
-	int pipe_nr;
+	int link_nr;
 	int loss_level;
 	int bandwidth;
 	int samples_no;		/* actual length of samples[] */
@@ -223,7 +223,7 @@ is no flow_mask, and each scheduler inst
 
 There are three data structures definining a pipe and associated queues:
 
- + dn_pipe, which contains the main configuration parameters related
+ + dn_link, which contains the main configuration parameters related
    to delay and bandwidth;
  + dn_flowset, which contains flow masks, weights and queue
    parameters;

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_io.c
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_io.c	Thu Jan 21 13:15:14 2010	(r202747)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_io.c	Thu Jan 21 13:21:06 2010	(r202748)
@@ -69,8 +69,8 @@ __FBSDID("$FreeBSD$");
 static uint64_t curr_time = 0; /* current simulation time */
 
 struct dn_parms dn_cfg = {
-	.pipe_slot_limit = 100, /* Foot shooting limit for pipe queues. */
-	.pipe_byte_limit = 1024 * 1024,
+	.slot_limit = 100, /* Foot shooting limit for queues. */
+	.byte_limit = 1024 * 1024,
 
 	.red_lookup_depth = 256,	/* RED - default lookup table depth */
 	.red_avg_pkt_size = 512,      /* RED - default medium packet size */
@@ -110,10 +110,10 @@ SYSCTL_NODE(_net_inet_ip, OID_AUTO, dumm
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, hash_size,
     CTLFLAG_RW, &dn_cfg.hash_size, 0, "Default hash table size");
 SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, pipe_slot_limit,
-    CTLFLAG_RW, &dn_cfg.pipe_slot_limit, 0,
+    CTLFLAG_RW, &dn_cfg.slot_limit, 0,
     "Upper limit in slots for pipe queue.");
 SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, pipe_byte_limit,
-    CTLFLAG_RW, &dn_cfg.pipe_byte_limit, 0,
+    CTLFLAG_RW, &dn_cfg.byte_limit, 0,
     "Upper limit in bytes for pipe queue.");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, io_fast,
     CTLFLAG_RW, &dn_cfg.io_fast, 0, "Enable fast dummynet io.");
@@ -313,7 +313,7 @@ extra_bits(struct mbuf *m, struct new_sc
 	if (!pf || pf->samples_no == 0)
 		return 0;
 	index  = random() % pf->samples_no;
-	bits = div64((uint64_t)pf->samples[index] * s->pipe.bandwidth, 1000);
+	bits = div64((uint64_t)pf->samples[index] * s->link.bandwidth, 1000);
 	if (index >= pf->loss_level) {
 		struct dn_pkt_tag *dt = dn_tag_get(m);
 		if (dt)
@@ -340,7 +340,7 @@ serve_sched(struct mq *q, struct new_sch
 		q->head = NULL;
 	}
 
-	bw = s->pipe.bandwidth;
+	bw = s->link.bandwidth;
 	si->kflags &= ~DN_ACTIVE;
 
 	if (bw > 0)
@@ -356,7 +356,7 @@ serve_sched(struct mq *q, struct new_sch
 		    (m->m_pkthdr.len * 8 + extra_bits(m, s));
 		si->credit -= len_scaled;
 		/* Move packet in the delay line */
-		dn_tag_get(m)->output_time += s->pipe.delay ;
+		dn_tag_get(m)->output_time += s->link.delay ;
 		mq_append(&si->dline.mq, m);
 	}
 	/*
@@ -633,7 +633,7 @@ dummynet_io(struct mbuf **m0, int dir, s
 
 	/* compute the initial allowance */
 	{
-	    struct new_pipe *p = &fs->sched->pipe;
+	    struct dn_link *p = &fs->sched->link;
 	    si->credit = dn_cfg.io_fast ? p->bandwidth : 0;
 	    if (p->burst) {
 		uint64_t burst = (curr_time - si->idle_time) * p->bandwidth;

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h	Thu Jan 21 13:15:14 2010	(r202747)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h	Thu Jan 21 13:21:06 2010	(r202748)
@@ -93,8 +93,8 @@ struct dn_parms {
 	int	red_max_pkt_size;
 	int	hash_size;
 	int	max_hash_size;
-	long	pipe_byte_limit;
-	long	pipe_slot_limit;
+	long	byte_limit;		/* max queue sizes */
+	long	slot_limit;
 
 	int	io_fast;
 
@@ -137,7 +137,7 @@ struct dn_parms {
 };
 
 /*
- * Delay line, contains all packets on output from a pipe.
+ * Delay line, contains all packets on output from a link.
  * Every scheduler instance has one.
  */
 struct delay_line {
@@ -189,7 +189,7 @@ struct new_queue {
 
 /*
  * The kernel side of a scheduler. Contains the userland config,
- * a pipe, pointer to extra config arguments from command line,
+ * a link, pointer to extra config arguments from command line,
  * kernel flags, and a pointer to the scheduler methods.
  * It is stored in a hash table, and holds a list of all
  * flowsets and scheduler instances.
@@ -198,7 +198,7 @@ struct new_queue {
 struct new_schk {
 	struct new_sch sch;
 	struct dn_sched *fp;	/* Pointer to scheduler functions */
-	struct new_pipe pipe;	/* the pipe is embedded */
+	struct dn_link link;	/* the link is embedded */
 	struct new_profile *profile;
 	struct dn_id *cfg; /* extra config arguments */
 
@@ -225,7 +225,7 @@ struct new_sch_inst {
 	int kflags;		/* DN_ACTIVE */
 
 	int64_t credit;		/* bits I can transmit (more or less). */
-	uint64_t sched_time;	/* time pipe was scheduled in ready_heap */
+	uint64_t sched_time;	/* time link was scheduled in ready_heap */
 	uint64_t idle_time;	/* start of scheduler instance idle time */
 };
 

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dummynet.c
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dummynet.c	Thu Jan 21 13:15:14 2010	(r202747)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dummynet.c	Thu Jan 21 13:21:06 2010	(r202748)
@@ -495,7 +495,7 @@ static int
 si_reset_credit(void *_si, void *arg)
 {
 	struct new_sch_inst *si = _si;
-	struct new_pipe *p = &si->sched->pipe;
+	struct dn_link *p = &si->sched->link;
 
 	si->credit = p->burst + (dn_cfg.io_fast ?  p->bandwidth : 0);
 	return 0;
@@ -670,9 +670,9 @@ schk_new(uintptr_t key, int flags, void 
 	s = malloc(l, M_DUMMYNET, M_NOWAIT | M_ZERO);
 	if (s == NULL)
 		return NULL;
-	set_oid(&s->pipe.oid, DN_PIPE, sizeof(s->pipe));
+	set_oid(&s->link.oid, DN_LINK, sizeof(s->link));
 	s->sch = *a->sch; // copy initial values
-	s->pipe.pipe_nr = s->sch.sched_nr;
+	s->link.link_nr = s->sch.sched_nr;
 	SLIST_INIT(&s->fsk_list);
 	/* initialize the hash table or create the single instance */
 	s->fp = a->fp;	/* si_new needs this */
@@ -813,16 +813,16 @@ copy_data_helper(void *_o, void *_arg)
 {
 	struct copy_args *a = _arg;
 
-	if (a->type == DN_PIPE ||	/* pipe show */
+	if (a->type == DN_LINK ||	/* pipe show */
 	    a->type == DN_SCH) {	/* sched show */
 		struct new_schk *s = _o; /* we get only schedulers */
 		if (a->type == DN_SCH && s->sch.sched_nr >= DN_MAX_ID)
 			return 0;	/* not valid scheduler */
-		if (a->type == DN_PIPE && s->sch.sched_nr <= DN_MAX_ID)
+		if (a->type == DN_LINK && s->sch.sched_nr <= DN_MAX_ID)
 			return 0;	/* not valid pipe */
 		if (a->flags & DN_C_PIPE) {
-			if (copy_obj(a->start, a->end, &s->pipe,
-					"pipe", s->sch.sched_nr))
+			if (copy_obj(a->start, a->end, &s->link,
+					"link", s->sch.sched_nr))
 				return DNHT_SCAN_END;
 			if (copy_flowset(a, s->fs, 0))
 				return DNHT_SCAN_END;
@@ -896,7 +896,7 @@ update_fs(struct new_schk *s)
 /*
  * Configuration -- to preserve backward compatibility we use
  * the following scheme (N is 65536)
- *	NUMBER		SCHED	PIPE	FLOWSET
+ *	NUMBER		SCHED	LINK	FLOWSET
  *	   1 ..  N-1	(1)WFQ	(2)WFQ	(3)queue
  *	 N+1 .. 2N-1	(4)FIFO (5)FIFO	(6)FIFO for sched 1..N-1
  *	2N+1 .. 3N-1	--	--	(7)FIFO for sched N+1..2N-1
@@ -916,10 +916,10 @@ update_fs(struct new_schk *s)
  */
 
 /*
- * configure a pipe (and its FIFO instance)
+ * configure a link (and its FIFO instance)
  */
 static int
-config_pipe(struct new_pipe *p, struct dn_id *arg)
+config_link(struct dn_link *p, struct dn_id *arg)
 {
 	int i;
 
@@ -927,7 +927,7 @@ config_pipe(struct new_pipe *p, struct d
 		D("invalid pipe len %d", p->oid.len);
 		return EINVAL;
 	}
-	i = p->pipe_nr;
+	i = p->link_nr;
 	if (i <= 0 || i >= DN_MAX_ID)
 		return EINVAL;
 	/*
@@ -942,7 +942,7 @@ config_pipe(struct new_pipe *p, struct d
 	p->burst *= 8 * hz;
 
 	DN_BH_WLOCK();
-	/* do it twice, base pipe and FIFO pipe */
+	/* do it twice, base link and FIFO link */
 	for (; i < 2*DN_MAX_ID; i += DN_MAX_ID) {
 	    struct new_schk *s = locate_scheduler(i);
 	    if (s == NULL) {
@@ -951,11 +951,11 @@ config_pipe(struct new_pipe *p, struct d
 		return EINVAL;
 	    }
 	    /* copy all parameters */
-	    s->pipe.oid = p->oid;
-	    s->pipe.pipe_nr = i;
-	    s->pipe.delay = p->delay;
-	    s->pipe.bandwidth = p->bandwidth;
-	    s->pipe.burst = p->burst;
+	    s->link.oid = p->oid;
+	    s->link.link_nr = i;
+	    s->link.delay = p->delay;
+	    s->link.bandwidth = p->bandwidth;
+	    s->link.burst = p->burst;
 	    schk_reset_credit(s);
 	}
 	dn_cfg.id++;
@@ -982,13 +982,11 @@ config_fs(struct new_fs *nfs, struct dn_
 	ND("flowset %d", i);
 	/* XXX other sanity checks */
         if (nfs->flags & DN_QSIZE_BYTES) {
-                if (nfs->qsize > dn_cfg.pipe_byte_limit)
-                        nfs->qsize = dn_cfg.pipe_byte_limit;
+		bound_var(&nfs->qsize, 16384,
+		    1500, dn_cfg.byte_limit, "queue byte size");
         } else {
-                if (nfs->qsize == 0)
-                        nfs->qsize = 50;
-                if (nfs->qsize > dn_cfg.pipe_slot_limit)
-                        nfs->qsize = dn_cfg.pipe_slot_limit;
+		bound_var(&nfs->qsize, 50,
+		    1, dn_cfg.slot_limit, "queue slot size");
         }
 	if (nfs->flags & DN_HAVE_MASK) {
 		/* make sure we have some buckets */
@@ -1046,7 +1044,7 @@ config_fs(struct new_fs *nfs, struct dn_
  * For !MULTIQUEUE schedulers, also set up the flowset.
  *
  * On reconfigurations (detected because s->fp is set),
- * detach existing flowsets preserving traffic, preserve pipe,
+ * detach existing flowsets preserving traffic, preserve link,
  * and delete the old scheduler creating a new one.
  */
 static int
@@ -1055,7 +1053,7 @@ config_sched(struct new_sch *_nsch, stru
 	struct new_schk *s;
 	struct schk_new_arg a; /* argument for schk_new */
 	int i;
-	struct new_pipe p;	/* copy of oldpipe */
+	struct dn_link p;	/* copy of oldlink */
 
 	a.sch = _nsch;
 	if (a.sch->oid.len != sizeof(*a.sch)) {
@@ -1106,10 +1104,10 @@ again: /* run twice, for wfq and fifo */
 		D("cannot allocate scheduler %d", i);
 		return ENOMEM;
 	}
-	/* restore existing pipe if any */
-	if (p.pipe_nr)
-		s->pipe = p;
-	p.pipe_nr = 0;
+	/* restore existing link if any */
+	if (p.link_nr)
+		s->link = p;
+	p.link_nr = 0;
 	if (s->fp == NULL) {
 		D("sched %d new type %s", i, a.fp->name);
 	} else if (s->fp != a.fp ||
@@ -1120,9 +1118,9 @@ again: /* run twice, for wfq and fifo */
 		D("   type/sub %d/%d -> %d/%d",
 			s->sch.oid.type, s->sch.oid.subtype, 
 			a.sch->oid.type, a.sch->oid.subtype);
-		if (s->pipe.pipe_nr == 0)
-			D("XXX WARNING pipe 0 for sched %d", i);
-		p = s->pipe;	/* preserve pipe */
+		if (s->link.link_nr == 0)
+			D("XXX WARNING link 0 for sched %d", i);
+		p = s->link;	/* preserve link */
 		/* remove from the hash */
 		dn_ht_find(dn_cfg.schedhash, i, DNHT_REMOVE, NULL);
 		/* Detach flowsets, preserve queues. */
@@ -1174,7 +1172,7 @@ again: /* run twice, for wfq and fifo */
 }
 
 /*
- * attach a profile to a pipe
+ * attach a profile to a link
  */
 static int
 config_profile(struct new_profile *pf, struct dn_id *arg)
@@ -1186,7 +1184,7 @@ config_profile(struct new_profile *pf, s
 		D("short profile len %d", pf->oid.len);
 		return EINVAL;
 	}
-	i = pf->pipe_nr;
+	i = pf->link_nr;
 	if (i <= 0 || i >= DN_MAX_ID)
 		return EINVAL;
 	/* XXX other sanity checks */
@@ -1240,7 +1238,7 @@ static void
 dummynet_flush(void)
 {
 
-	/* delete all schedulers and related pipes/queues/flowsets */
+	/* delete all schedulers and related links/queues/flowsets */
 	dn_ht_scan(dn_cfg.schedhash, schk_delete_cb,
 		(void *)(uintptr_t)DN_DELETE_FS);
 	/* delete all remaining (unlinked) flowsets */
@@ -1255,7 +1253,7 @@ dummynet_flush(void)
  * Main handler for configuration. We are guaranteed to be called
  * with an oid which is at least a dn_id.
  * - the first object is the command (config, delete, flush, ...)
- * - config_pipe must be issued after the corresponding config_sched
+ * - config_link must be issued after the corresponding config_sched
  * - parameters (DN_TXT) for an object must preceed the object
  *   processed on a config_sched.
  */
@@ -1293,7 +1291,7 @@ do_config(void *p, int l)
 
 		case DN_CMD_DELETE:
 			switch (o->subtype) {
-			case DN_PIPE:
+			case DN_LINK:
 				/* delete base and derived schedulers */
 				DN_BH_WLOCK();
 				err = delete_schk(o->id);
@@ -1325,8 +1323,8 @@ do_config(void *p, int l)
 			prev = NULL;
 			arg = o;
 			break;
-		case DN_PIPE:
-			err = config_pipe((struct new_pipe *)o, arg);
+		case DN_LINK:
+			err = config_link((struct dn_link *)o, arg);
 			break;
 		case DN_PROFILE:
 			err = config_profile((struct new_profile *)o, arg);
@@ -1354,7 +1352,7 @@ compute_space(struct dn_id *cmd, int *to
 	switch (cmd->subtype) {
 	default:
 		return -1;
-	case DN_PIPE:	/* pipe show */
+	case DN_LINK:	/* pipe show */
 		x = DN_C_PIPE | DN_C_FS | DN_SCH | DN_C_SCH_INST;
 		break;
 	case DN_SCH:	/* sched show */
@@ -1370,7 +1368,7 @@ compute_space(struct dn_id *cmd, int *to
 	if (x & DN_C_FS)
 		need += dn_cfg.fsk_count * sizeof(struct new_fs);
 	if (x & DN_C_PIPE)
-		need += dn_cfg.schk_count * sizeof(struct new_pipe);
+		need += dn_cfg.schk_count * sizeof(struct dn_link);
 	/* XXX queue space might be variable */
 	if (x & DN_C_QUEUE)
 		need += dn_cfg.queue_count * sizeof(struct new_queue);
@@ -1422,10 +1420,10 @@ dummynet_get(struct sockopt *sopt)
 	}
 	if (start == NULL)
 		return sooptcopyout(sopt, &cmd, sizeof(cmd));
-	ND("have %d:%d sched %d, %d:%d pipes %d, %d:%d flows %d, "
+	ND("have %d:%d sched %d, %d:%d links %d, %d:%d flows %d, "
 		"%d:%d si %d, %d:%d queues %d",
 		dn_cfg.schk_count, sizeof(struct new_sch), DN_SCH,
-		dn_cfg.schk_count, sizeof(struct new_pipe), DN_PIPE,
+		dn_cfg.schk_count, sizeof(struct dn_link), DN_LINK,
 		dn_cfg.fsk_count, sizeof(struct new_fs), DN_FS,
 		dn_cfg.si_count, sizeof(struct new_inst), DN_SCH_I,
 		dn_cfg.queue_count, sizeof(struct new_queue), DN_QUEUE);


More information about the svn-src-user mailing list