summaryrefslogtreecommitdiffstats
path: root/tc/f_u32.c
diff options
context:
space:
mode:
authorshemminger <shemminger>2006-03-22 00:07:49 +0000
committershemminger <shemminger>2006-03-22 00:07:49 +0000
commit267480f55383cb9f7ddf82412814d3147510df01 (patch)
treec96e7386b5c017e76da7364a1d24bc004fcaeab8 /tc/f_u32.c
parent7b5657545dc246ae37690d660597e8fa37040205 (diff)
Backout the 2.4 utsname hash patch.
Diffstat (limited to 'tc/f_u32.c')
-rw-r--r--tc/f_u32.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/tc/f_u32.c b/tc/f_u32.c
index 243088e8..9d527fc0 100644
--- a/tc/f_u32.c
+++ b/tc/f_u32.c
@@ -17,7 +17,6 @@
#include <syslog.h>
#include <fcntl.h>
#include <sys/socket.h>
-#include <sys/utsname.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
@@ -877,7 +876,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle, int argc, char **
} else if (strcmp(*argv, "sample") == 0) {
__u32 hash;
unsigned divisor = 0x100;
- struct utsname utsname;
+
struct {
struct tc_u32_sel sel;
struct tc_u32_key keys[4];
@@ -902,19 +901,8 @@ static int u32_parse_opt(struct filter_util *qu, char *handle, int argc, char **
NEXT_ARG();
}
hash = sel2.sel.keys[0].val&sel2.sel.keys[0].mask;
- uname(&utsname);
- if (strncmp(utsname.release, "2.4.", 4) == 0) {
- hash ^= hash>>16;
- hash ^= hash>>8;
- }
- else {
- __u32 mask = sel2.sel.keys[0].mask;
- while (mask && !(mask & 1)) {
- mask >>= 1;
- hash >>= 1;
- }
- hash &= 0xFF;
- }
+ hash ^= hash>>16;
+ hash ^= hash>>8;
htid = ((hash%divisor)<<12)|(htid&0xFFF00000);
sample_ok = 1;
continue;