Author: luigi
Date: Mon Mar 15 15:43:35 2010
New Revision: 205169
URL: http://svn.freebsd.org/changeset/base/205169

Log:
  Implement "lookup dscp N" which does a lookup of the DSCP (top 6 bits
  of ip->ip_tos) in a table. This can be useful to direct traffic to
  different pipes/queues according to the DSCP of the packet, as follows:
  
      ipfw add 100 queue tablearg lookup dscp 3 // table 3 maps dscp->queue
  
  This change is a no-op (but harmless) until the two-line kernel
  side is committed, which will happen shortly.

Modified:
  head/sbin/ipfw/ipfw2.c
  head/sbin/ipfw/ipfw2.h

Modified: head/sbin/ipfw/ipfw2.c
==============================================================================
--- head/sbin/ipfw/ipfw2.c      Mon Mar 15 15:33:32 2010        (r205168)
+++ head/sbin/ipfw/ipfw2.c      Mon Mar 15 15:43:35 2010        (r205169)
@@ -231,7 +231,7 @@ static struct _s_x rule_action_params[] 
  */
 static int lookup_key[] = {
        TOK_DSTIP, TOK_SRCIP, TOK_DSTPORT, TOK_SRCPORT,
-       TOK_UID, TOK_JAIL, -1 };
+       TOK_UID, TOK_JAIL, TOK_DSCP, -1 };
 
 static struct _s_x rule_options[] = {
        { "tagged",             TOK_TAGGED },
@@ -258,6 +258,7 @@ static struct _s_x rule_options[] = {
        { "iplen",              TOK_IPLEN },
        { "ipid",               TOK_IPID },
        { "ipprecedence",       TOK_IPPRECEDENCE },
+       { "dscp",               TOK_DSCP },
        { "iptos",              TOK_IPTOS },
        { "ipttl",              TOK_IPTTL },
        { "ipversion",          TOK_IPVER },
@@ -3519,7 +3520,7 @@ read_options:
                        char *p;
                        int j;
 
-                       if (av[0] && av[1])
+                       if (!av[0] || !av[1])
                                errx(EX_USAGE, "format: lookup argument 
tablenum");
                        cmd->opcode = O_IP_DST_LOOKUP;
                        cmd->len |= F_INSN_SIZE(ipfw_insn) + 2;

Modified: head/sbin/ipfw/ipfw2.h
==============================================================================
--- head/sbin/ipfw/ipfw2.h      Mon Mar 15 15:33:32 2010        (r205168)
+++ head/sbin/ipfw/ipfw2.h      Mon Mar 15 15:43:35 2010        (r205169)
@@ -125,6 +125,7 @@ enum tokens {
        TOK_IPLEN,
        TOK_IPID,
        TOK_IPPRECEDENCE,
+       TOK_DSCP,
        TOK_IPTOS,
        TOK_IPTTL,
        TOK_IPVER,
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to