• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/ap/gpl/iproute2/tc/

Lines Matching refs:sel

112 static int pack_key(struct tc_u32_sel *sel, __u32 key, __u32 mask, int off, int offmask)
115 int hwm = sel->nkeys;
120 if (sel->keys[i].off == off && sel->keys[i].offmask == offmask) {
121 __u32 intersect = mask&sel->keys[i].mask;
123 if ((key^sel->keys[i].val) & intersect)
125 sel->keys[i].val |= key;
126 sel->keys[i].mask |= mask;
135 sel->keys[hwm].val = key;
136 sel->keys[hwm].mask = mask;
137 sel->keys[hwm].off = off;
138 sel->keys[hwm].offmask = offmask;
139 sel->nkeys++;
143 static int pack_key32(struct tc_u32_sel *sel, __u32 key, __u32 mask, int off, int offmask)
147 return pack_key(sel, key, mask, off, offmask);
150 static int pack_key16(struct tc_u32_sel *sel, __u32 key, __u32 mask, int off, int offmask)
163 return pack_key(sel, key, mask, off, offmask);
166 static int pack_key8(struct tc_u32_sel *sel, __u32 key, __u32 mask, int off, int offmask)
185 return pack_key(sel, key, mask, off, offmask);
218 static int parse_u32(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off, int offmask)
243 res = pack_key32(sel, key, mask, off, offmask);
249 static int parse_u16(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off, int offmask)
273 res = pack_key16(sel, key, mask, off, offmask);
279 static int parse_u8(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off, int offmask)
307 res = pack_key8(sel, key, mask, off, offmask);
313 static int parse_ip_addr(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off)
338 if (pack_key(sel, addr.data[0], mask, off, offmask) < 0)
347 static int parse_ip6_addr(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off)
374 if ((res = pack_key(sel, addr.data[i/32], 0xFFFFFFFF, off+4*(i/32), offmask)) < 0)
378 if ((res = pack_key(sel, addr.data[i/32], mask, off+4*(i/32), offmask)) < 0)
389 static int parse_ip(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
400 res = parse_ip_addr(&argc, &argv, sel, 12);
405 res = parse_ip_addr(&argc, &argv, sel, 16);
411 res = parse_u8(&argc, &argv, sel, 1, 0);
416 res = parse_u8(&argc, &argv, sel, 0, 0);
421 res = parse_u8(&argc, &argv, sel, 9, 0);
426 res = parse_u8(&argc, &argv, sel, 1, 0);
431 res = pack_key16(sel, 0, 0x3FFF, 6, 0);
436 res = pack_key16(sel, 0, 0x1FFF, 6, 0);
441 res = pack_key16(sel, 0x4000, 0x4000, 6, 0);
446 res = pack_key16(sel, 0x2000, 0x2000, 6, 0);
451 res = parse_u16(&argc, &argv, sel, 22, 0);
456 res = parse_u16(&argc, &argv, sel, 20, 0);
461 res = parse_u8(&argc, &argv, sel, 20, 0);
466 res = parse_u8(&argc, &argv, sel, 20, 1);
477 static int parse_ip6(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
488 res = parse_ip6_addr(&argc, &argv, sel, 8);
493 res = parse_ip6_addr(&argc, &argv, sel, 24);
498 res = parse_u8(&argc, &argv, sel, 0, 0);
503 res = parse_u8(&argc, &argv, sel, 6, 0);
508 res = parse_u32(&argc, &argv, sel, 0, 0);
513 res = parse_u16(&argc, &argv, sel, 42, 0);
518 res = parse_u16(&argc, &argv, sel, 40, 0);
523 res = parse_u8(&argc, &argv, sel, 40, 0);
528 res = parse_u8(&argc, &argv, sel, 41, 1);
540 static int parse_udp(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
551 res = parse_u16(&argc, &argv, sel, 0, -1);
556 res = parse_u16(&argc, &argv, sel, 2, -1);
567 static int parse_icmp(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
578 res = parse_u8(&argc, &argv, sel, 0, -1);
583 res = parse_u8(&argc, &argv, sel, 1, -1);
629 static int parse_selector(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, struct nlmsghdr *n)
640 res = parse_u32(&argc, &argv, sel, 0, 0);
645 res = parse_u16(&argc, &argv, sel, 0, 0);
650 res = parse_u8(&argc, &argv, sel, 0, 0);
655 res = parse_ip(&argc, &argv, sel);
660 res = parse_ip6(&argc, &argv, sel);
665 res = parse_udp(&argc, &argv, sel);
670 res = parse_tcp(&argc, &argv, sel);
675 res = parse_icmp(&argc, &argv, sel);
692 static int parse_offset(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
703 sel->off = off;
704 sel->flags |= TC_U32_OFFSET;
710 sel->offoff = off;
715 sel->flags |= TC_U32_VAROFFSET;
721 sel->offmask = htons(mask);
722 sel->flags |= TC_U32_VAROFFSET;
728 sel->offshift = shift;
729 sel->flags |= TC_U32_VAROFFSET;
731 sel->flags |= TC_U32_EAT;
743 static int parse_hashkey(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
754 sel->hmask = htonl(mask);
762 sel->hoff = num;
777 struct tc_u32_sel sel;
779 } sel;
787 memset(&sel, 0, sizeof(sel));
803 if (parse_selector(&argc, &argv, &sel.sel, n)) {
811 if (parse_offset(&argc, &argv, &sel.sel)) {
818 if (parse_hashkey(&argc, &argv, &sel.sel)) {
832 sel.sel.flags |= TC_U32_TERMINAL;
878 struct tc_u32_sel sel;
882 if (parse_selector(&argc, &argv, &sel2.sel, n)) {
886 if (sel2.sel.nkeys != 1) {
890 hash = sel2.sel.keys[0].val&sel2.sel.keys[0].mask;
945 addattr_l(n, MAX_MSG, TCA_U32_SEL, &sel, sizeof(sel.sel)+sel.sel.nkeys*sizeof(struct tc_u32_key));
953 struct tc_u32_sel *sel = NULL;
970 if (RTA_PAYLOAD(tb[TCA_U32_SEL]) < sizeof(*sel))
973 sel = RTA_DATA(tb[TCA_U32_SEL]);
987 !sel || !(sel->flags&TC_U32_TERMINAL) ? "*" : "",
989 } else if (sel && sel->flags&TC_U32_TERMINAL) {
1005 if (sel && show_stats && NULL != pf)
1020 if (sel) {
1022 struct tc_u32_key *key = sel->keys;
1023 if (sel->nkeys) {
1024 for (i=0; i<sel->nkeys; i++, key++) {
1036 if (sel->flags&(TC_U32_VAROFFSET|TC_U32_OFFSET)) {
1038 if (sel->flags&TC_U32_VAROFFSET)
1039 fprintf(f, "%04x>>%d at %d ", ntohs(sel->offmask), sel->offshift, sel->offoff);
1040 if (sel->off)
1041 fprintf(f, "plus %d ", sel->off);
1043 if (sel->flags&TC_U32_EAT)
1046 if (sel->hmask) {
1048 (unsigned int)htonl(sel->hmask), sel->hoff);