svn commit: r202794 - user/luigi/ipfw3-head/sbin/ipfw
Luigi Rizzo
luigi at FreeBSD.org
Fri Jan 22 09:49:08 UTC 2010
Author: luigi
Date: Fri Jan 22 09:49:07 2010
New Revision: 202794
URL: http://svn.freebsd.org/changeset/base/202794
Log:
build with higher WARNS
fix some comments
Modified:
user/luigi/ipfw3-head/sbin/ipfw/dummynet.c
user/luigi/ipfw3-head/sbin/ipfw/ipfw2.c
Modified: user/luigi/ipfw3-head/sbin/ipfw/dummynet.c
==============================================================================
--- user/luigi/ipfw3-head/sbin/ipfw/dummynet.c Fri Jan 22 09:42:41 2010 (r202793)
+++ user/luigi/ipfw3-head/sbin/ipfw/dummynet.c Fri Jan 22 09:49:07 2010 (r202794)
@@ -1,10 +1,5 @@
/*
- * Copyright (c) 2002-2003 Luigi Rizzo
- * Copyright (c) 1996 Alex Nash, Paul Traina, Poul-Henning Kamp
- * Copyright (c) 1994 Ugen J.S.Antsilevich
- *
- * Idea and grammar partially left from:
- * Copyright (c) 1993 Daniel Boulet
+ * Copyright (c) 2002-2003,2010 Luigi Rizzo
*
* Redistribution and use in source forms, with and without modification,
* are permitted provided that this entire comment appears intact.
@@ -15,8 +10,6 @@
*
* This software is provided ``AS IS'' without any warranties of any kind.
*
- * NEW command line interface for IP firewall facility
- *
* $FreeBSD$
*
* dummynet support
@@ -85,7 +78,7 @@ static struct _s_x dummynet_params[] = {
{ NULL, 0 } /* terminator */
};
-#define O_NEXT(p, len) ((void *)(char *)(p) + len)
+#define O_NEXT(p, len) ((void *)((char *)p + len))
static void
oid_fill(struct dn_id *oid, int len, int type, uintptr_t id)
@@ -140,6 +133,7 @@ sort_q(void *arg, const void *pa, const
}
#endif
+/* print a mask and header for the subsequent list of flows */
static void
print_mask(struct ipfw_flow_id *id)
{
@@ -286,10 +280,9 @@ flush_buf(char *buf)
* FLOWSETS:
* flowset; queues;
* link i (int queue); scheduler i; si(i) { flowsets() : queues }
- * filt is an array of sorted ranges whithin where we list
*/
static void
-list_pipes(struct dn_id *oid, struct dn_id *end, int *filt)
+list_pipes(struct dn_id *oid, struct dn_id *end)
{
char buf[160]; /* pending buffer */
buf[0] = '\0';
@@ -405,15 +398,15 @@ list_pipes(struct dn_id *oid, struct dn_
* Delete pipe, queue or scheduler i
*/
int
-ipfw_delete_pipe(int pipe_or_queue, int i)
+ipfw_delete_pipe(int do_pipe, int i)
{
struct {
struct dn_id oid;
- uint32_t a[1]; /* add more if we want a list */
+ uintptr_t a[1]; /* add 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_LINK :
- ( (co.do_pipe == 2) ? DN_FS : DN_SCH);
+ cmd.oid.subtype = (do_pipe == 1) ? DN_LINK :
+ ( (do_pipe == 2) ? DN_FS : DN_SCH);
cmd.a[0] = i;
i = do_cmd(IP_DUMMYNET3, &cmd, cmd.oid.len);
if (i) {
@@ -733,17 +726,17 @@ load_extra_delays(const char *filename,
double y2 = points[i+1].prob * samples;
double x2 = points[i+1].delay;
- int index = y1;
+ int ix = y1;
int stop = y2;
if (x1 == x2) {
- for (; index<stop; ++index)
- p->samples[index] = x1;
+ for (; ix<stop; ++ix)
+ p->samples[ix] = x1;
} else {
double m = (y2-y1)/(x2-x1);
double c = y1 - m*x1;
- for (; index<stop ; ++index)
- p->samples[index] = (index - c)/m;
+ for (; ix<stop ; ++ix)
+ p->samples[ix] = (ix - c)/m;
}
}
p->samples_no = samples;
@@ -1255,15 +1248,17 @@ dummynet_flush(void)
do_cmd(IP_DUMMYNET3, &oid, oid.len);
}
+/* main entry point for dummynet list functions. co.do_pipe indicates
+ * which function we want to support.
+ * XXX todo- accept filtering arguments.
+ */
void
-dummynet_list(int ac, char *av[], int show_counters)
+dummynet_list(int __unused ac, __unused char *av[], int __unused show_counters)
{
struct dn_id oid, *x;
int ret, l = sizeof(oid);
- oid.type = DN_CMD_GET;
- oid.len = l;
- oid.id = DN_API_VERSION;
+ oid_fill(&oid, l, DN_CMD_GET, DN_API_VERSION);
switch (co.do_pipe) {
case 1:
oid.subtype = DN_LINK; /* list pipe */
@@ -1280,12 +1275,11 @@ dummynet_list(int ac, char *av[], int sh
if (ret != 0 || oid.id <= sizeof(oid))
return;
l = oid.id;
- x = malloc(l);
- if (x == NULL)
- err(1, "no memory in %s", __FUNCTION__);
+ x = safe_calloc(1, l);
*x = oid;
ret = do_cmd(-IP_DUMMYNET3, x, (uintptr_t)&l);
// printf("%s returns %d need %d\n", __FUNCTION__, ret, oid.id);
- list_pipes(x, O_NEXT(x, l), NULL);
+ // XXX filter on ac, av
+ list_pipes(x, O_NEXT(x, l));
free(x);
}
Modified: user/luigi/ipfw3-head/sbin/ipfw/ipfw2.c
==============================================================================
--- user/luigi/ipfw3-head/sbin/ipfw/ipfw2.c Fri Jan 22 09:42:41 2010 (r202793)
+++ user/luigi/ipfw3-head/sbin/ipfw/ipfw2.c Fri Jan 22 09:49:07 2010 (r202794)
@@ -65,23 +65,23 @@ int resvd_set_number = RESVD_SET;
} \
\
{ \
- long val; \
+ long _xval; \
char *end; \
\
- val = strtol(*av, &end, 10); \
+ _xval = strtol(*av, &end, 10); \
\
- if (!isdigit(**av) || *end != '\0' || (val == 0 && errno == EINVAL)) \
+ if (!isdigit(**av) || *end != '\0' || (_xval == 0 && errno == EINVAL)) \
errx(EX_DATAERR, "%s: invalid argument: %s", \
match_value(s_x, tok), *av); \
\
- if (errno == ERANGE || val < min || val > max) \
+ if (errno == ERANGE || _xval < min || _xval > max) \
errx(EX_DATAERR, "%s: argument is out of range (%u..%u): %s", \
match_value(s_x, tok), min, max, *av); \
\
- if (val == IP_FW_TABLEARG) \
+ if (_xval == IP_FW_TABLEARG) \
errx(EX_DATAERR, "%s: illegal argument value: %s", \
match_value(s_x, tok), *av); \
- arg = val; \
+ arg = _xval; \
} \
} while (0)
@@ -754,7 +754,7 @@ static void
print_ip(ipfw_insn_ip *cmd, char const *s)
{
struct hostent *he = NULL;
- int len = F_LEN((ipfw_insn *)cmd);
+ uint32_t len = F_LEN((ipfw_insn *)cmd);
uint32_t *a = ((ipfw_insn_u32 *)cmd)->d;
if (cmd->o.opcode == O_IP_DST_LOOKUP && len > F_INSN_SIZE(ipfw_insn_u32)) {
@@ -2134,7 +2134,7 @@ fill_ip(ipfw_insn_ip *cmd, char *av)
return;
}
/* A single IP can be stored in an optimized format */
- if (d[1] == ~0 && av == NULL && len == 0) {
+ if (d[1] == (uint32_t)~0 && av == NULL && len == 0) {
cmd->o.len |= F_INSN_SIZE(ipfw_insn_u32);
return;
}
@@ -2279,7 +2279,8 @@ fill_iface(ipfw_insn_if *cmd, char *arg)
static void
get_mac_addr_mask(const char *p, uint8_t *addr, uint8_t *mask)
{
- int i, l;
+ int i;
+ size_t l;
char *ap, *ptr, *optr;
struct ether_addr *mac;
const char *macset = "0123456789abcdefABCDEF:";
@@ -2301,11 +2302,11 @@ get_mac_addr_mask(const char *p, uint8_t
if (ptr != NULL) { /* we have mask? */
if (p[ptr - optr - 1] == '/') { /* mask len */
- l = strtol(ptr, &ap, 10);
- if (*ap != 0 || l > ETHER_ADDR_LEN * 8 || l < 0)
+ long ml = strtol(ptr, &ap, 10);
+ if (*ap != 0 || ml > ETHER_ADDR_LEN * 8 || ml < 0)
errx(EX_DATAERR, "Incorrect mask length");
- for (i = 0; l > 0 && i < ETHER_ADDR_LEN; l -= 8, i++)
- mask[i] = (l >= 8) ? 0xff: (~0) << (8 - l);
+ for (i = 0; ml > 0 && i < ETHER_ADDR_LEN; ml -= 8, i++)
+ mask[i] = (ml >= 8) ? 0xff: (~0) << (8 - ml);
} else { /* mask */
l = strlen(ptr);
if (strspn(ptr, macset) != l ||
@@ -3819,14 +3820,14 @@ ipfw_table_handler(int ac, char *av[])
}
}
} else if (_substrcmp(*av, "flush") == 0) {
- a = is_all ? tables_max : (ent.tbl + 1);
+ a = is_all ? tables_max : (uint32_t)(ent.tbl + 1);
do {
if (do_cmd(IP_FW_TABLE_FLUSH, &ent.tbl,
sizeof(ent.tbl)) < 0)
err(EX_OSERR, "setsockopt(IP_FW_TABLE_FLUSH)");
} while (++ent.tbl < a);
} else if (_substrcmp(*av, "list") == 0) {
- a = is_all ? tables_max : (ent.tbl + 1);
+ a = is_all ? tables_max : (uint32_t)(ent.tbl + 1);
do {
table_list(ent, is_all);
} while (++ent.tbl < a);
More information about the svn-src-user
mailing list