summaryrefslogtreecommitdiffstats
path: root/extensions/libipt_DSCP.c
diff options
context:
space:
mode:
authorlaforge <laforge>2002-06-21 17:35:55 +0000
committerlaforge <laforge>2002-06-21 17:35:55 +0000
commit728f0c5c3820faca398de339b367c3f19b767a69 (patch)
tree98a812cce0e2830992fdb0e1d0dc823416fba355 /extensions/libipt_DSCP.c
parent75639251de2321df6bb55abef083c3b140c375e3 (diff)
move DSCP name/value conversion to libipt_dscp_helper.c (Iain Barnes)
Diffstat (limited to 'extensions/libipt_DSCP.c')
-rw-r--r--extensions/libipt_DSCP.c47
1 files changed, 5 insertions, 42 deletions
diff --git a/extensions/libipt_DSCP.c b/extensions/libipt_DSCP.c
index e06c736..1324663 100644
--- a/extensions/libipt_DSCP.c
+++ b/extensions/libipt_DSCP.c
@@ -18,39 +18,9 @@
#include <linux/netfilter_ipv4/ip_tables.h>
#include <linux/netfilter_ipv4/ipt_DSCP.h>
+/* This is evil, but it's my code - HW*/
+#include "libipt_dscp_helper.c"
-/* see http://www.iana.org/assignments/dscp-registry */
-
-static struct ds_class
-{
- char *class;
- unsigned int dscp;
-} ds_classes[] =
-{
- { "CS0", 0 },
- { "CS1", 0x08 },
- { "CS2", 0x10 },
- { "CS3", 0x18 },
- { "CS3", 0x18 },
- { "CS4", 0x20 },
- { "CS5", 0x28 },
- { "CS6", 0x30 },
- { "CS6", 0x38 },
- { "BE", 0 },
- { "AF11", 0x0a },
- { "AF12", 0x0c },
- { "AF13", 0x0e },
- { "AF21", 0x12 },
- { "AF22", 0x14 },
- { "AF23", 0x16 },
- { "AF31", 0x1a },
- { "AF32", 0x1c },
- { "AF33", 0x1e },
- { "AF41", 0x22 },
- { "AF42", 0x24 },
- { "AF43", 0x26 },
- { "EF", 0x2e }
-};
static void init(struct ipt_entry_target *t, unsigned int *nfcache)
{
@@ -99,17 +69,10 @@ parse_dscp(const unsigned char *s, struct ipt_DSCP_info *dinfo)
static void
parse_class(const unsigned char *s, struct ipt_DSCP_info *dinfo)
{
- int i;
-
- for (i = 0; i < sizeof(ds_classes) / sizeof(struct ds_class); i++) {
- if (!strncasecmp(s, ds_classes[i].class,
- strlen(ds_classes[i].class))) {
- dinfo->dscp = (u_int8_t)ds_classes[i].dscp;
- return;
- }
- }
+ unsigned int dscp = class_to_dscp(s);
- exit_error(PARAMETER_PROBLEM, "Invalid DSCP class value '%s'", s);
+ /* Assign the value */
+ dinfo->dscp = (u_int8_t)dscp;
}