1 struct rde_peer peer = { 2 .conf.local_as = 42, 3 .conf.remote_as = 22512, 4 }; 5 struct rde_peer peer_l4 = { 6 .conf.local_as = 196618, 7 .conf.remote_as = 22512, 8 }; 9 struct rde_peer peer_r4 = { 10 .conf.local_as = 22512, 11 .conf.remote_as = 196618, 12 }; 13 struct rde_peer peer_b4 = { 14 .conf.local_as = 196618, 15 .conf.remote_as = 424242, 16 }; 17 18 struct vector { 19 uint8_t *data; 20 size_t size; 21 uint8_t *expected; 22 size_t expsize; 23 } vectors[] = { 24 25 { 26 .data = "\xc0\x08\x04\x00\x00\x48\xce", 27 .size = 7 28 }, 29 { 30 .data = "\xc0\x08\x04\x0f\x10\xc8\x02", 31 .size = 7 32 }, 33 { 34 .data = "\xc0\x08\x04\x3b\xc0\x00\xc9", 35 .size = 7 36 }, 37 { 38 .data = "\xe0\x08\x04\x4e\x97\x00\x03", 39 .size = 7 40 }, 41 { 42 .data = "\xe0\x08\x08\x3b\xc0\x00\xc9\x3b\xc0\x00\xcb", 43 .size = 11 44 }, 45 { 46 .data = "\xc0\x08\x08\x9e\x19\x7a\x44\x9e\x19\x7a\x45", 47 .size = 11 48 }, 49 { 50 .data = "\xc0\x08\x14\x00\x00\x0b\x5a\x00\x00\x3f\x89\x00\x00" 51 "\x3f\x94\x00\x00\x48\xce\x00\x00\xa2\xda", 52 .size = 23 53 }, 54 { 55 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\x40", 56 .size = 11 57 }, 58 { 59 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\x42", 60 .size = 11 61 }, 62 { 63 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\xb2", 64 .size = 11 65 }, 66 { 67 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\xd3", 68 .size = 11 69 }, 70 { 71 .data = "\xe0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\x10", 72 .size = 11 73 }, 74 { 75 .data = "\xe0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\x1e", 76 .size = 11 77 }, 78 { 79 .data = "\xe0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\x29", 80 .size = 11 81 }, 82 { 83 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\xb6", 84 .size = 11 85 }, 86 { 87 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\xe0", 88 .size = 11 89 }, 90 { 91 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x02\x8b", 92 .size = 11 93 }, 94 { 95 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x02\xc5", 96 .size = 11 97 }, 98 { 99 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x03\xc2", 100 .size = 11 101 }, 102 { 103 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x04\x09", 104 .size = 11 105 }, 106 { 107 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x04\xe4", 108 .size = 11 109 }, 110 { 111 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x05\x57", 112 .size = 11 113 }, 114 { 115 .data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x05\x92", 116 .size = 11 117 }, 118 { 119 .data = "\xc0\x10\x08\x00\x02\xfd\xe8\x00\x00\x2a\xf8", 120 .size = 11 121 }, 122 { 123 .data = "\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 124 "\x00\x03", 125 .size = 15 126 }, 127 { 128 .data = "\xc0\x20\x18\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 129 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 130 "\x00\x03", 131 .size = 27 132 }, 133 { 134 .data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 135 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 136 "\x00\x03\x00\x00\xed\x5f\x00\x00\xed\x5f\x00\x00" 137 "\xed\x5f", 138 .size = 39 139 }, 140 { 141 .data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 142 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 143 "\x00\x03\x00\x03\x16\x49\x00\x03\x16\x49\x00\x00" 144 "\x00\x64", 145 .size = 39 146 }, 147 { 148 .data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 149 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 150 "\x00\x03\x00\x03\x16\xa9\x00\x03\x16\xa9\x00\x00" 151 "\x00\x00", 152 .size = 39 153 }, 154 { 155 .data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 156 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 157 "\x00\x03\x00\x03\x24\x92\x00\x00\x00\x03\x00\x00" 158 "\x00\x01", 159 .size = 39 160 }, 161 { 162 .data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 163 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 164 "\x00\x03\x00\x03\x25\x4b\x00\x00\x00\xc8\x00\x00" 165 "\x00\x00", 166 .size = 39 167 }, 168 { 169 .data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 170 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 171 "\x00\x03\x00\x03\x26\x8f\x00\x00\x01\x2c\x00\x00" 172 "\x00\x00", 173 .size = 39 174 }, 175 { 176 .data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 177 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 178 "\x00\x03\x00\x03\x26\xa3\x00\x00\x02\x58\x00\x03" 179 "\x26\xa3", 180 .size = 39 181 }, 182 { 183 .data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 184 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 185 "\x00\x03\x00\x03\x33\xc8\x00\x00\x07\xd0\x00\x00" 186 "\x00\x1e", 187 .size = 39 188 }, 189 { 190 .data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 191 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 192 "\x00\x03\x00\x00\xdf\x1e\x00\x00\x00\x1e\x00\x00" 193 "\x00\x00\x00\x00\xdf\x1e\x00\x00\x00\x1e\x00\x00" 194 "\x00\x0a", 195 .size = 51 196 }, 197 { 198 .data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 199 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 200 "\x00\x03\x00\x03\x1c\xe3\x00\x00\x00\x01\x00\x00" 201 "\x00\x00\x00\x03\x1c\xe3\x00\x00\x00\x01\x00\x00" 202 "\x00\x02", 203 .size = 51 204 }, 205 { 206 .data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 207 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 208 "\x00\x03\x00\x03\x26\xa3\x00\x00\x02\x58\x00\x03" 209 "\x26\xa3\x00\x03\x26\xa3\x00\x03\x26\xa3\x00\x00" 210 "\x00\xc8", 211 .size = 51 212 }, 213 { 214 .data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 215 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 216 "\x00\x03\x00\x03\x27\xdd\x00\x00\x00\x00\x00\x00" 217 "\x00\x00\x00\x03\x27\xdd\x00\x00\x00\x00\x00\x00" 218 "\x23\x49", 219 .size = 51 220 }, 221 { 222 .data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 223 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 224 "\x00\x03\x00\x03\x27\xdd\x00\x00\x00\x00\x00\x00" 225 "\x00\x00\x00\x03\x27\xdd\x00\x00\x00\x00\x00\x00" 226 "\xc2\x51", 227 .size = 51 228 }, 229 { 230 .data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 231 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 232 "\x00\x03\x00\x03\x28\xe8\x00\x00\x00\x00\x00\x00" 233 "\x00\x00\x00\x03\x28\xe8\x00\x00\x00\x01\x00\x00" 234 "\x00\x00", 235 .size = 51 236 }, 237 { 238 .data = "\xe0\x20\x3c\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 239 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 240 "\x00\x03\x00\x02\x1a\xcd\x00\x00\xfc\x00\x00\x00" 241 "\x00\x0b\x00\x02\x1a\xcd\x00\x00\xfc\x00\x00\x00" 242 "\x00\x15\x00\x02\x1a\xcd\x00\x00\xff\xed\x00\x00" 243 "\x00\x01", 244 .size = 63 245 }, 246 { 247 .data = "\xe0\x20\x3c\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 248 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 249 "\x00\x03\x00\x03\x16\xa9\x00\x00\x00\x00\x00\x03" 250 "\x35\x3a\x00\x03\x16\xa9\x00\x03\x16\xa9\x00\x00" 251 "\x00\x00\x00\x03\x26\xa3\x00\x03\x26\xa3\x00\x00" 252 "\x03\x84", 253 .size = 63 254 }, 255 { 256 .data = "\xe0\x20\x3c\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 257 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 258 "\x00\x03\x00\x03\x16\xa9\x00\x03\x16\xa9\x00\x03" 259 "\x16\xa9\x00\x03\x26\xa3\x00\x00\x01\x2c\x00\x00" 260 "\x03\xe7\x00\x03\x26\xa3\x00\x00\x02\x58\x00\x03" 261 "\x26\xa3", 262 .size = 63 263 }, 264 { 265 .data = "\xe0\x20\xb4\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 266 "\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00" 267 "\x00\x03\x00\x03\x22\xd3\x00\x00\x00\x0a\x00\x00" 268 "\x00\x0a\x00\x03\x22\xd3\x00\x00\x00\x0a\x00\x00" 269 "\x00\xc9\x00\x03\x22\xd3\x00\x00\x00\x0a\x00\x00" 270 "\x00\xca\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 271 "\x00\x0b\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 272 "\x00\x64\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 273 "\x00\x65\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 274 "\x00\x66\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 275 "\x00\x67\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 276 "\x00\x68\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 277 "\x00\xc8\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 278 "\x00\xcf\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00" 279 "\x00\xd0\x00\x03\x22\xd3\x00\x00\x00\x79\x00\x00" 280 "\x00\x00", 281 .size = 183 282 }, 283 { 284 .data = "\xc0\x10\x08\x43\x00\x00\x00\x00\x00\x00\x02", 285 .size = 11, 286 .expected = "", 287 .expsize = 0, 288 }, 289 { 290 .data = "\xc0\x10\x10\x00\x02\xfc\x00\x00\x00\x00\x40" 291 "\x43\x00\x00\x00\x00\x00\x00\x02", 292 .size = 19, 293 .expected = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\x40", 294 .expsize = 11, 295 }, 296 { 297 .data = "\xc0\x10\x18\x00\x02\xfc\x00\x00\x00\x00\x40" 298 "\x43\x00\x00\x00\x00\x00\x00\x02" 299 "\x06\x00\x00\x00\x00\x00\x00\x01", 300 .size = 27, 301 .expected = "\xc0\x10\x10\x06\x00\x00\x00\x00\x00\x00\x01" 302 "\x00\x02\xfc\x00\x00\x00\x00\x40", 303 .expsize = 19, 304 }, 305 { 306 .data = "\xe0\x08\x04\x4e\x97\x00\x03" 307 "\xc0\x10\x08\x43\x00\x00\x00\x00\x00\x00\x02", 308 .size = 7 + 11, 309 .expected = "\xe0\x08\x04\x4e\x97\x00\x03", 310 .expsize = 7, 311 }, 312 { 313 .data = "\xe0\x08\x04\x4e\x97\x00\x03" 314 "\xc0\x10\x10\x00\x02\xfc\x00\x00\x00\x00\x40" 315 "\x43\x00\x00\x00\x00\x00\x00\x02", 316 .size = 7 + 19, 317 .expected = "\xe0\x08\x04\x4e\x97\x00\x03" 318 "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\x40", 319 .expsize = 7 + 11, 320 }, 321 { 322 .data = "\xc0\x10\x08\x43\x00\x00\x00\x00\x00\x00\x02" 323 "\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b" 324 "\x00\x00\x00\x03", 325 .size = 11 + 15, 326 .expected = "\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b" 327 "\x00\x00\x00\x03", 328 .expsize = 15, 329 }, 330 { 331 .data = "\xe0\x08\x04\x4e\x97\x00\x03" 332 "\xc0\x10\x08\x43\x00\x00\x00\x00\x00\x00\x02" 333 "\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b" 334 "\x00\x00\x00\x03", 335 .size = 7 + 11 + 15, 336 .expected = "\xe0\x08\x04\x4e\x97\x00\x03" 337 "\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b" 338 "\x00\x00\x00\x03", 339 .expsize = 7 + 15, 340 }, 341 }; 342 343 struct community filters[] = { 344 { /* 0 */ 345 .flags = COMMUNITY_TYPE_BASIC, 346 .data1 = COMMUNITY_WELLKNOWN, 347 .data2 = COMMUNITY_NO_ADVERTISE 348 }, 349 { /* 1 */ 350 .flags = COMMUNITY_TYPE_BASIC, 351 .data1 = COMMUNITY_WELLKNOWN, 352 .data2 = COMMUNITY_NO_EXPORT 353 }, 354 { /* 2 */ 355 .flags = COMMUNITY_TYPE_BASIC, 356 .data1 = COMMUNITY_WELLKNOWN, 357 .data2 = COMMUNITY_NO_EXPSUBCONFED 358 }, 359 { /* 3 */ 360 .flags = COMMUNITY_TYPE_BASIC, 361 .data1 = 22512, 362 .data2 = 1 363 }, 364 { /* 4 */ 365 .flags = COMMUNITY_TYPE_BASIC, 366 .data1 = 22512, 367 .data2 = 42 368 }, 369 { /* 5 */ 370 .flags = COMMUNITY_TYPE_BASIC, 371 .data1 = 22512, 372 .data2 = 65366 373 }, 374 { /* 6 */ 375 .flags = COMMUNITY_TYPE_BASIC, 376 .data1 = 1, 377 .data2 = 22512 378 }, 379 { /* 7 */ 380 .flags = COMMUNITY_TYPE_BASIC, 381 .data1 = 42, 382 .data2 = 22512 383 }, 384 { /* 8 */ 385 .flags = COMMUNITY_TYPE_BASIC, 386 .data1 = 65366, 387 .data2 = 22512 388 }, 389 { /* 9 */ 390 .flags = COMMUNITY_TYPE_LARGE, 391 .data1 = 22512, 392 .data2 = 22512, 393 .data3 = 22512 394 }, 395 { /* 10 */ 396 .flags = COMMUNITY_TYPE_LARGE, 397 .data1 = 22512, 398 .data2 = 42, 399 .data3 = 22512 400 }, 401 { /* 11 */ 402 .flags = COMMUNITY_TYPE_LARGE, 403 .data1 = 22512, 404 .data2 = 42, 405 .data3 = 42 406 }, 407 { /* 12 */ 408 .flags = COMMUNITY_TYPE_LARGE, 409 .data1 = 42, 410 .data2 = 22512, 411 .data3 = 22512 412 }, 413 { /* 13 */ 414 .flags = COMMUNITY_TYPE_LARGE, 415 .data1 = 42, 416 .data2 = 42, 417 .data3 = 22512 418 }, 419 { /* 14 */ 420 .flags = COMMUNITY_TYPE_LARGE, 421 .data1 = 42, 422 .data2 = 22512, 423 .data3 = 42 424 }, 425 { /* 15 */ 426 .flags = COMMUNITY_TYPE_LARGE, 427 .data1 = 65366, 428 .data2 = 22512, 429 .data3 = 22512 430 }, 431 { /* 16 */ 432 .flags = COMMUNITY_TYPE_LARGE, 433 .data1 = 22512, 434 .data2 = 65366, 435 .data3 = 22512 436 }, 437 { /* 17 */ 438 .flags = COMMUNITY_TYPE_LARGE, 439 .data1 = 22512, 440 .data2 = 65366, 441 .data3 = 65366 442 }, 443 { /* 18 */ 444 .flags = COMMUNITY_TYPE_LARGE, 445 .data1 = 42, 446 .data2 = 42, 447 .data3 = 42 448 }, 449 { /* 19 */ 450 .flags = COMMUNITY_TYPE_LARGE, 451 .data1 = 65366, 452 .data2 = 65366, 453 .data3 = 65366 454 }, 455 { /* 20 */ 456 .flags = COMMUNITY_TYPE_BASIC | (COMMUNITY_ANY << 16), 457 .data1 = COMMUNITY_WELLKNOWN, 458 }, 459 { /* 21 */ 460 .flags = COMMUNITY_TYPE_BASIC | (COMMUNITY_ANY << 16), 461 .data1 = 22512, 462 }, 463 { /* 22 */ 464 .flags = COMMUNITY_TYPE_BASIC | (COMMUNITY_ANY << 8), 465 .data2 = 22512 466 }, 467 { /* 23 */ 468 .flags = COMMUNITY_TYPE_LARGE | (COMMUNITY_ANY << 8) | 469 (COMMUNITY_ANY << 16) | (COMMUNITY_ANY << 24), 470 }, 471 { /* 24 */ 472 .flags = COMMUNITY_TYPE_LARGE | (COMMUNITY_ANY << 16) | 473 (COMMUNITY_ANY << 24), 474 .data1 = 22512, 475 }, 476 { /* 25 */ 477 .flags = COMMUNITY_TYPE_EXT, 478 .data3 = EXT_COMMUNITY_TRANS_TWO_AS << 8 | 0x02, 479 .data1 = 22512, 480 .data2 = 42, 481 }, 482 { /* 26 */ 483 .flags = COMMUNITY_TYPE_EXT, 484 .data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02, 485 .data1 = 22512, 486 .data2 = 42, 487 }, 488 { /* 27 */ 489 .flags = COMMUNITY_TYPE_EXT, 490 .data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02, 491 .data1 = 22512, 492 .data2 = 15, 493 }, 494 { /* 28 */ 495 .flags = COMMUNITY_TYPE_BASIC | (COMMUNITY_LOCAL_AS << 8) | 496 (COMMUNITY_NEIGHBOR_AS << 16), 497 }, 498 { /* 29 */ 499 .flags = COMMUNITY_TYPE_LARGE | (COMMUNITY_LOCAL_AS << 8) | 500 (COMMUNITY_NEIGHBOR_AS << 24), 501 }, 502 { /* 30 */ 503 .flags = COMMUNITY_TYPE_EXT | (COMMUNITY_LOCAL_AS << 8) | 504 (COMMUNITY_NEIGHBOR_AS << 16), 505 .data3 = EXT_COMMUNITY_TRANS_TWO_AS << 8 | 0x02, 506 }, 507 { /* 31 */ 508 .flags = COMMUNITY_TYPE_BASIC, 509 .data1 = 42, 510 .data2 = 22512, 511 }, 512 { /* 32 */ 513 .flags = COMMUNITY_TYPE_BASIC, 514 .data1 = 65366, 515 .data2 = 22512, 516 }, 517 { /* 33 */ 518 .flags = COMMUNITY_TYPE_BASIC, 519 .data1 = 42, 520 .data2 = 65366, 521 }, 522 { /* 34 */ 523 .flags = COMMUNITY_TYPE_LARGE, 524 .data1 = 42, 525 .data2 = 0, 526 .data3 = 22512, 527 }, 528 { /* 35 */ 529 .flags = COMMUNITY_TYPE_LARGE, 530 .data1 = 196618, 531 .data2 = 0, 532 .data3 = 22512, 533 }, 534 { /* 36 */ 535 .flags = COMMUNITY_TYPE_LARGE, 536 .data1 = 22512, 537 .data2 = 0, 538 .data3 = 196618, 539 }, 540 { /* 37 */ 541 .flags = COMMUNITY_TYPE_LARGE, 542 .data1 = 196618, 543 .data2 = 0, 544 .data3 = 424242, 545 }, 546 { /* 38 */ 547 .flags = COMMUNITY_TYPE_EXT, 548 .data1 = 42, 549 .data2 = 22512, 550 .data3 = EXT_COMMUNITY_TRANS_TWO_AS << 8 | 0x02, 551 }, 552 { /* 39 */ 553 .flags = COMMUNITY_TYPE_EXT, 554 .data1 = 42, 555 .data2 = 22512, 556 .data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02, 557 }, 558 { /* 40 */ 559 .flags = COMMUNITY_TYPE_EXT, 560 .data1 = 196618, 561 .data2 = 22512, 562 .data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02, 563 }, 564 { /* 41 */ 565 .flags = COMMUNITY_TYPE_EXT, 566 .data1 = 22512, 567 .data2 = 196618, 568 .data3 = EXT_COMMUNITY_TRANS_TWO_AS << 8 | 0x02, 569 }, 570 { /* 42 */ 571 .flags = COMMUNITY_TYPE_EXT | (COMMUNITY_ANY << 24), 572 }, 573 { /* 43 */ 574 .flags = COMMUNITY_TYPE_EXT | (COMMUNITY_ANY << 8), 575 .data3 = (-1 << 8) | 0x02, 576 }, 577 { /* 44 */ 578 .flags = COMMUNITY_TYPE_EXT | (COMMUNITY_ANY << 8), 579 .data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02, 580 }, 581 { /* 45 */ 582 .flags = COMMUNITY_TYPE_EXT | (COMMUNITY_ANY << 16), 583 .data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02, 584 .data1 = 196618, 585 }, 586 }; 587 588 struct testfilter { 589 int in[8]; 590 int delete; 591 int match; 592 int mout; 593 int ncomm; 594 int next; 595 int nlarge; 596 struct rde_peer *peer; 597 } testfilters[] = { 598 { 599 .in = { 1, 2, -1 }, 600 .match = 1, 601 .mout = 1, 602 .delete = 1, 603 }, 604 { 605 .in = { 1, 2, -1 }, 606 .match = 2, 607 .mout = 1, 608 .delete = 2, 609 }, 610 { 611 .in = { 1, 2, -1 }, 612 .match = 20, 613 .mout = 1, 614 .delete = 20, 615 }, 616 { 617 .in = { 1, 2, 1, 2, -1 }, 618 .match = 5, 619 .mout = 0, 620 .delete = 5, 621 }, 622 { 623 .in = { 3, 4, 5, 6, 7, 8, -1 }, 624 .match = 5, 625 .mout = 1, 626 .delete = 5, 627 }, 628 { /* 5 */ 629 .in = { 3, 4, 5, 6, 7, 8, -1 }, 630 .match = 20, 631 .mout = 0, 632 .delete = -1, 633 }, 634 { 635 .in = { 3, 4, 5, 6, 7, 8, -1 }, 636 .match = 21, 637 .mout = 1, 638 .delete = 21, 639 }, 640 { 641 .in = { 3, 4, 5, 6, 7, 8, -1 }, 642 .match = 22, 643 .mout = 1, 644 .delete = 22, 645 }, 646 { 647 .in = { 17, 18, 19, -1 }, 648 .match = 22, 649 .mout = 0, 650 .delete = 17, 651 }, 652 { 653 .in = { 17, 18, 19, 7, 8, -1 }, 654 .match = 18, 655 .mout = 1, 656 .delete = 19, 657 }, 658 { /* 10 */ 659 .in = { 1, 3, 5, -1 }, 660 .match = 23, 661 .mout = 0, 662 .delete = -1, 663 }, 664 { 665 .in = { 1, 3, 5, 17, -1 }, 666 .match = 23, 667 .mout = 1, 668 .delete = 23, 669 }, 670 { 671 .in = { 1, 3, 5, 19, -1 }, 672 .match = 24, 673 .mout = 0, 674 .delete = -1, 675 }, 676 { 677 .in = { 19, 18, 17, -1 }, 678 .match = 24, 679 .mout = 1, 680 .delete = 24, 681 }, 682 { 683 .in = { 25, 26, -1 }, 684 .match = 25, 685 .mout = 1, 686 .delete = 25, 687 }, 688 { /* 15 */ 689 .in = { 25, 26, -1 }, 690 .match = 26, 691 .mout = 1, 692 .delete = 26, 693 }, 694 { 695 .in = { 17, 0, -1 }, 696 .match = 0, 697 .mout = 1, 698 .delete = 0, 699 }, 700 { 701 .in = { -1 }, 702 .match = 21, 703 .mout = 0, 704 .delete = -1, 705 .ncomm = 0 + 1, 706 .next = 0 + 1, 707 .nlarge = 0 + 1, 708 }, 709 { 710 .in = { 0, 3, 6, -1 }, 711 .match = -1, 712 .delete = -1, 713 .ncomm = 3 + 1, 714 .next = 0 + 1, 715 .nlarge = 0 + 1, 716 }, 717 { 718 .in = { 0, 25, 26, 19, -1 }, 719 .match = -1, 720 .delete = -1, 721 .ncomm = 1 + 1, 722 .next = 2 + 1, 723 .nlarge = 1 + 1, 724 }, 725 { /* 20 */ 726 .in = { 0, 10, 26, -1 }, 727 .match = -1, 728 .delete = -1, 729 .ncomm = 1 + 1, 730 .next = 1 + 1, 731 .nlarge = 1 + 1, 732 }, 733 { 734 .in = { 28, -1 }, 735 .match = 28, 736 .mout = 1, 737 .delete = 28, 738 .peer = &peer, 739 }, 740 { 741 .in = { 31, -1 }, 742 .match = 28, 743 .mout = 1, 744 .delete = 28, 745 .peer = &peer, 746 }, 747 { 748 .in = { 31, -1 }, 749 .match = 28, 750 .mout = 0, 751 .peer = &peer_l4, 752 }, 753 { 754 .in = { 31, -1 }, 755 .match = 28, 756 .mout = 0, 757 .peer = &peer_r4, 758 }, 759 { /* 25 */ 760 .in = { 31, -1 }, 761 .match = 28, 762 .mout = 0, 763 .peer = &peer_b4, 764 }, 765 { 766 .in = { 32, -1 }, 767 .match = 28, 768 .mout = 0, 769 .peer = &peer, 770 }, 771 { 772 .in = { 32, -1 }, 773 .match = 28, 774 .mout = 0, 775 .peer = &peer_l4, 776 }, 777 { 778 .in = { 32, -1 }, 779 .match = 28, 780 .mout = 0, 781 .peer = &peer_r4, 782 }, 783 { 784 .in = { 32, -1 }, 785 .match = 28, 786 .mout = 0, 787 .peer = &peer_b4, 788 }, 789 { /* 30 */ 790 .in = { 33, -1 }, 791 .match = 28, 792 .mout = 0, 793 .peer = &peer, 794 }, 795 { 796 .in = { 33, -1 }, 797 .match = 28, 798 .mout = 0, 799 .peer = &peer_l4, 800 }, 801 { 802 .in = { 33, -1 }, 803 .match = 28, 804 .mout = 0, 805 .peer = &peer_r4, 806 }, 807 { 808 .in = { 33, -1 }, 809 .match = 28, 810 .mout = 0, 811 .peer = &peer_b4, 812 }, 813 { 814 .in = { 29, -1 }, 815 .match = 29, 816 .mout = 1, 817 .delete = 29, 818 .peer = &peer, 819 }, 820 { /* 35 */ 821 .in = { 29, -1 }, 822 .match = 29, 823 .mout = 1, 824 .delete = 29, 825 .peer = &peer_l4, 826 }, 827 { 828 .in = { 29, -1 }, 829 .match = 29, 830 .mout = 1, 831 .delete = 29, 832 .peer = &peer_r4, 833 }, 834 { 835 .in = { 29, -1 }, 836 .match = 29, 837 .mout = 1, 838 .delete = 29, 839 .peer = &peer_b4, 840 }, 841 { 842 .in = { 34, -1 }, 843 .match = 29, 844 .mout = 1, 845 .peer = &peer, 846 }, 847 { 848 .in = { 34, -1 }, 849 .match = 29, 850 .mout = 0, 851 .peer = &peer_l4, 852 }, 853 { /* 40 */ 854 .in = { 34, -1 }, 855 .match = 29, 856 .mout = 0, 857 .peer = &peer_r4, 858 }, 859 { 860 .in = { 34, -1 }, 861 .match = 29, 862 .mout = 0, 863 .peer = &peer_b4, 864 }, 865 { 866 .in = { 35, -1 }, 867 .match = 29, 868 .mout = 0, 869 .peer = &peer, 870 }, 871 { 872 .in = { 35, -1 }, 873 .match = 29, 874 .mout = 1, 875 .peer = &peer_l4, 876 }, 877 { 878 .in = { 35, -1 }, 879 .match = 29, 880 .mout = 0, 881 .peer = &peer_r4, 882 }, 883 { /* 45 */ 884 .in = { 35, -1 }, 885 .match = 29, 886 .mout = 0, 887 .peer = &peer_b4, 888 }, 889 { 890 .in = { 36, -1 }, 891 .match = 29, 892 .mout = 0, 893 .peer = &peer, 894 }, 895 { 896 .in = { 36, -1 }, 897 .match = 29, 898 .mout = 0, 899 .peer = &peer_l4, 900 }, 901 { 902 .in = { 36, -1 }, 903 .match = 29, 904 .mout = 1, 905 .peer = &peer_r4, 906 }, 907 { 908 .in = { 36, -1 }, 909 .match = 29, 910 .mout = 0, 911 .peer = &peer_b4, 912 }, 913 { /* 50 */ 914 .in = { 37, -1 }, 915 .match = 29, 916 .mout = 0, 917 .peer = &peer, 918 }, 919 { 920 .in = { 37, -1 }, 921 .match = 29, 922 .mout = 0, 923 .peer = &peer_l4, 924 }, 925 { 926 .in = { 37, -1 }, 927 .match = 29, 928 .mout = 0, 929 .peer = &peer_r4, 930 }, 931 { 932 .in = { 37, -1 }, 933 .match = 29, 934 .mout = 1, 935 .peer = &peer_b4, 936 }, 937 { 938 .in = { 30, -1 }, 939 .match = 30, 940 .mout = 1, 941 .delete = 30, 942 .peer = &peer, 943 }, 944 { /* 55 */ 945 .in = { 30, -1 }, 946 .match = 30, 947 .mout = 1, 948 .delete = 30, 949 .peer = &peer_l4, 950 }, 951 { 952 .in = { 30, -1 }, 953 .match = 30, 954 .mout = 1, 955 .delete = 30, 956 .peer = &peer_r4, 957 }, 958 { 959 .in = { 38, -1 }, 960 .match = 30, 961 .mout = 1, 962 .peer = &peer, 963 }, 964 { 965 .in = { 38, -1 }, 966 .match = 30, 967 .mout = 0, 968 .peer = &peer_l4, 969 }, 970 { 971 .in = { 38, -1 }, 972 .match = 30, 973 .mout = 0, 974 .peer = &peer_r4, 975 }, 976 { /* 60 */ 977 .in = { 39, -1 }, 978 .match = 30, 979 .mout = 1, 980 .peer = &peer, 981 }, 982 { 983 .in = { 39, -1 }, 984 .match = 30, 985 .mout = 0, 986 .peer = &peer_l4, 987 }, 988 { 989 .in = { 39, -1 }, 990 .match = 30, 991 .mout = 0, 992 .peer = &peer_r4, 993 }, 994 { 995 .in = { 40, -1 }, 996 .match = 30, 997 .mout = 0, 998 .peer = &peer, 999 }, 1000 { 1001 .in = { 40, -1 }, 1002 .match = 30, 1003 .mout = 1, 1004 .peer = &peer_l4, 1005 }, 1006 { /* 65 */ 1007 .in = { 40, -1 }, 1008 .match = 30, 1009 .mout = 0, 1010 .peer = &peer_r4, 1011 }, 1012 { 1013 .in = { 41, -1 }, 1014 .match = 30, 1015 .mout = 0, 1016 .peer = &peer, 1017 }, 1018 { 1019 .in = { 41, -1 }, 1020 .match = 30, 1021 .mout = 0, 1022 .peer = &peer_l4, 1023 }, 1024 { 1025 .in = { 41, -1 }, 1026 .match = 30, 1027 .mout = 1, 1028 .peer = &peer_r4, 1029 }, 1030 { 1031 .in = { 38, -1 }, 1032 .match = 30, 1033 .mout = 1, 1034 .peer = &peer, 1035 }, 1036 { /* 70 */ 1037 .in = { 38, 39, 40, -1 }, 1038 .match = 42, 1039 .mout = 1, 1040 .delete = 42, 1041 .next = 0 + 1, 1042 .peer = &peer, 1043 }, 1044 { 1045 .in = { 38, 39, 40, -1 }, 1046 .match = 43, 1047 .mout = 1, 1048 .delete = 43, 1049 .next = 0 + 1, 1050 .peer = &peer, 1051 }, 1052 { 1053 .in = { 39, 40, -1 }, 1054 .match = 44, 1055 .mout = 1, 1056 .delete = 44, 1057 .next = 0 + 1, 1058 .peer = &peer, 1059 }, 1060 { 1061 .in = { 38, -1 }, 1062 .match = 44, 1063 .mout = 0, 1064 .peer = &peer, 1065 }, 1066 { 1067 .in = { 40, -1 }, 1068 .match = 45, 1069 .mout = 1, 1070 .delete = 45, 1071 .next = 0 + 1, 1072 .peer = &peer, 1073 }, 1074 { /* 75 */ 1075 .in = { 38, 39, 41, -1 }, 1076 .match = 45, 1077 .mout = 0, 1078 .peer = &peer, 1079 }, 1080 }; 1081