• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asus-wl-520gu-7.0.1.45/src/router/iproute2/tc/

Lines Matching defs:sel

110 static int pack_key(struct tc_u32_sel *sel, __u32 key, __u32 mask, int off, int offmask)
113 int hwm = sel->nkeys;
118 if (sel->keys[i].off == off && sel->keys[i].offmask == offmask) {
119 __u32 intersect = mask&sel->keys[i].mask;
121 if ((key^sel->keys[i].val) & intersect)
123 sel->keys[i].val |= key;
124 sel->keys[i].mask |= mask;
133 sel->keys[hwm].val = key;
134 sel->keys[hwm].mask = mask;
135 sel->keys[hwm].off = off;
136 sel->keys[hwm].offmask = offmask;
137 sel->nkeys++;
141 static int pack_key32(struct tc_u32_sel *sel, __u32 key, __u32 mask, int off, int offmask)
145 return pack_key(sel, key, mask, off, offmask);
148 static int pack_key16(struct tc_u32_sel *sel, __u32 key, __u32 mask, int off, int offmask)
161 return pack_key(sel, key, mask, off, offmask);
164 static int pack_key8(struct tc_u32_sel *sel, __u32 key, __u32 mask, int off, int offmask)
183 return pack_key(sel, key, mask, off, offmask);
216 static int parse_u32(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off, int offmask)
241 res = pack_key32(sel, key, mask, off, offmask);
247 static int parse_u16(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off, int offmask)
271 res = pack_key16(sel, key, mask, off, offmask);
277 static int parse_u8(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off, int offmask)
305 res = pack_key8(sel, key, mask, off, offmask);
311 static int parse_ip_addr(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off)
336 if (pack_key(sel, addr.data[0], mask, off, offmask) < 0)
345 static int parse_ip6_addr(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, int off)
371 if ((res = pack_key(sel, addr.data[i/32], 0xFFFFFFFF, off+4*(i/32), offmask)) < 0)
375 if ((res = pack_key(sel, addr.data[i/32], mask, off+4*(i/32), offmask)) < 0)
386 static int parse_ip(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
397 res = parse_ip_addr(&argc, &argv, sel, 12);
402 res = parse_ip_addr(&argc, &argv, sel, 16);
408 res = parse_u8(&argc, &argv, sel, 1, 0);
413 res = parse_u8(&argc, &argv, sel, 0, 0);
418 res = parse_u8(&argc, &argv, sel, 9, 0);
423 res = parse_u8(&argc, &argv, sel, 1, 0);
428 res = pack_key16(sel, 0, 0x3FFF, 6, 0);
433 res = pack_key16(sel, 0, 0x1FFF, 6, 0);
438 res = pack_key16(sel, 0x4000, 0x4000, 6, 0);
443 res = pack_key16(sel, 0x2000, 0x2000, 6, 0);
448 res = parse_u16(&argc, &argv, sel, 22, 0);
453 res = parse_u16(&argc, &argv, sel, 20, 0);
458 res = parse_u8(&argc, &argv, sel, 20, 0);
463 res = parse_u8(&argc, &argv, sel, 20, 1);
474 static int parse_ip6(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
485 res = parse_ip6_addr(&argc, &argv, sel, 8);
490 res = parse_ip6_addr(&argc, &argv, sel, 24);
495 res = parse_u8(&argc, &argv, sel, 0, 0);
500 res = parse_u8(&argc, &argv, sel, 6, 0);
505 res = parse_u32(&argc, &argv, sel, 0, 0);
510 res = parse_u16(&argc, &argv, sel, 42, 0);
515 res = parse_u16(&argc, &argv, sel, 40, 0);
520 res = parse_u8(&argc, &argv, sel, 40, 0);
525 res = parse_u8(&argc, &argv, sel, 41, 1);
537 static int parse_udp(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
548 res = parse_u16(&argc, &argv, sel, 0, -1);
553 res = parse_u16(&argc, &argv, sel, 2, -1);
564 static int parse_icmp(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
575 res = parse_u8(&argc, &argv, sel, 0, -1);
580 res = parse_u8(&argc, &argv, sel, 1, -1);
593 static int parse_selector(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
604 res = parse_u32(&argc, &argv, sel, 0, 0);
609 res = parse_u16(&argc, &argv, sel, 0, 0);
614 res = parse_u8(&argc, &argv, sel, 0, 0);
619 res = parse_ip(&argc, &argv, sel);
624 res = parse_ip6(&argc, &argv, sel);
629 res = parse_udp(&argc, &argv, sel);
634 res = parse_tcp(&argc, &argv, sel);
639 res = parse_icmp(&argc, &argv, sel);
650 static int parse_offset(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
661 sel->off = off;
662 sel->flags |= TC_U32_OFFSET;
668 sel->offoff = off;
673 sel->flags |= TC_U32_VAROFFSET;
679 sel->offmask = htons(mask);
680 sel->flags |= TC_U32_VAROFFSET;
686 sel->offshift = shift;
687 sel->flags |= TC_U32_VAROFFSET;
689 sel->flags |= TC_U32_EAT;
701 static int parse_hashkey(int *argc_p, char ***argv_p, struct tc_u32_sel *sel)
712 sel->hmask = htonl(mask);
720 sel->hoff = num;
735 struct tc_u32_sel sel;
737 } sel;
745 memset(&sel, 0, sizeof(sel));
761 if (parse_selector(&argc, &argv, &sel.sel)) {
769 if (parse_offset(&argc, &argv, &sel.sel)) {
776 if (parse_hashkey(&argc, &argv, &sel.sel)) {
790 sel.sel.flags |= TC_U32_TERMINAL;
836 struct tc_u32_sel sel;
840 if (parse_selector(&argc, &argv, &sel2.sel)) {
844 if (sel2.sel.nkeys != 1) {
848 hash = sel2.sel.keys[0].val&sel2.sel.keys[0].mask;
883 addattr_l(n, 4096, TCA_U32_SEL, &sel, sizeof(sel.sel)+sel.sel.nkeys*sizeof(struct tc_u32_key));
891 struct tc_u32_sel *sel = NULL;
909 if (RTA_PAYLOAD(tb[TCA_U32_SEL]) < sizeof(*sel))
912 sel = RTA_DATA(tb[TCA_U32_SEL]);
926 !sel || !(sel->flags&TC_U32_TERMINAL) ? "*" : "",
928 } else if (sel && sel->flags&TC_U32_TERMINAL) {
940 if (sel) {
942 struct tc_u32_key *key = sel->keys;
944 if (sel->nkeys) {
945 for (i=0; i<sel->nkeys; i++, key++)
953 if (sel->flags&(TC_U32_VAROFFSET|TC_U32_OFFSET)) {
955 if (sel->flags&TC_U32_VAROFFSET)
956 fprintf(f, "%04x>>%d at %d ", ntohs(sel->offmask), sel->offshift, sel->offoff);
957 if (sel->off)
958 fprintf(f, "plus %d ", sel->off);
960 if (sel->flags&TC_U32_EAT)
963 if (sel->hmask) {
965 (unsigned int)htonl(sel->hmask), sel->hoff);