1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
# rel_math: access+unum rel unum ----------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0]+1 == 10;
}
EOF
match 0:0:8=0x09 action 1
# rel_math: access+unum rel u128 ----------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0]+1 == ::a;
}
EOF
match 0:0:8=0x09 action 1
# rel_math: access+u128 rel u128 ----------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0]+::2 == ::a;
}
EOF
match 0:0:8=0x08 action 1
# rel_math: access-unum rel u128 ----------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0]-1 == ::;
}
EOF
match 0:0:8=0x01 action 1
# rel_math: u128-access rel u128 ----------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if ::a-raw[0] == ::;
}
EOF
match 0:0:8=0x0A action 1
# rel_math: u128 rel access-unum ----------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if :: == raw[0]-4;
}
EOF
match 0:0:8=0x04 action 1
# rel_to_eq: < 4 becomes == ---------------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0] < 4;
}
EOF
match 0:0:6=0x00 action 1
# rel_to_eq: < ::4 becomes == -------------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0] < ::4;
}
EOF
match 0:0:6=0x00 action 1
# rel_to_eq: < ::3 is not changed ---------------------------------------------
tcc -xif:err 2>&1 | grep -c 'match .* action'
prio {
drop if raw[0] < ::3;
}
EOF
2
# rel_to_eq: < 1|2^32 is not changed ------------------------------------------
tcc -xif:err 2>&1 | grep -c 'match .* action'
prio {
drop if raw[0].ipv6 < ::1:1;
}
EOF
2
# rel_to_eq: < 2^32|2^127 is not changed --------------------------------------
tcc -xif:err 2>&1 | grep -c 'match .* action'
prio {
drop if raw[0].ipv6 < 8000::1:0:0;
}
EOF
2
# rel_to_eq: <= ::7 is changed ------------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0] <= ::7;
}
EOF
match 0:0:5=0x00 action 1
# preparation: verify that ~:: is FFFF:...:FFFF -------------------------------
tcc -c -u stderr -Wnounused 2>&1
$x = ~::;
EOF
$x = FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
# rel_to_eq: <= ~:: is changed ------------------------------------------------
tcc -xif:err 2>&1 | grep action
prio {
drop if raw[0] <= ~::;
}
EOF
action 0 = drop
match action 0
# rel_to_eq: > ::7 is changed -------------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0] > ::7;
}
EOF
match 0:0:5=0x00 action 1
# rel_to_eq: >= ::8 is changed -------------------------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if raw[0] >= ::8;
}
EOF
match 0:0:5=0x00 action 1
# rel_eq_or: access ^ unum1 == unum2 -> access == unum1 ^ unum2 ---------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if (raw[0] ^ 2) == 1;
}
EOF
match 0:0:8=0x03 action 1
# rel_eq_or: access ^ u128_1 == unum2 -> access == u128_1 ^ unum2 -------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if (raw[0] ^ ::2) == 1;
}
EOF
match 0:0:8=0x03 action 1
# rel_eq_or: access ^ unum1 == u128_2 -> access == unum1 ^ u128_2 -------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if (raw[0].ipv6 ^ 2) == ::1:0;
}
EOF
match 0:0:128=0x00000000000000000000000000010002 action 1
# rel_eq_or: access ^ u128_1 == u128_2 -> access == u128_1 ^ u128_2 -----------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if (raw[0].ipv6 ^ ::1) == ::2;
}
EOF
match 0:0:128=0x00000000000000000000000000000003 action 1
# rel_eq_or: access | unum1 == unum2 -> 0 -------------------------------------
tcc -xif:err 2>&1 | grep match
prio {
drop if (raw[0] | 3) == 5;
}
EOF
match action 0
# rel_eq_or: access | unum1 == unum2 -> 0 (not) -------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if (raw[0] | 3) == 7;
}
EOF
match 0:0:6=0x01 action 1
# rel_eq_or: access | u128_1 == unum2 -> 0 ------------------------------------
tcc -xif:err 2>&1 | grep match
prio {
drop if (raw[0] | ::3) == 5;
}
EOF
match action 0
# rel_eq_or: access | unum1 == u128_2 -> 0 (not) ------------------------------
tcc -xif:err 2>&1 | grep 'match .* action'
prio {
drop if (raw[0] | 3) == ::f;
}
EOF
match 0:0:6=0x03 action 1
|