struct rde_peer peer = {
.conf.local_as = 42,
.conf.remote_as = 22512,
};
struct rde_peer peer_l4 = {
.conf.local_as = 196618,
.conf.remote_as = 22512,
};
struct rde_peer peer_r4 = {
.conf.local_as = 22512,
.conf.remote_as = 196618,
};
struct rde_peer peer_b4 = {
.conf.local_as = 196618,
.conf.remote_as = 424242,
};
struct vector {
uint8_t *data;
size_t size;
uint8_t *expected;
size_t expsize;
} vectors[] = {
{
.data = "\xc0\x08\x04\x00\x00\x48\xce",
.size = 7
},
{
.data = "\xc0\x08\x04\x0f\x10\xc8\x02",
.size = 7
},
{
.data = "\xc0\x08\x04\x3b\xc0\x00\xc9",
.size = 7
},
{
.data = "\xe0\x08\x04\x4e\x97\x00\x03",
.size = 7
},
{
.data = "\xe0\x08\x08\x3b\xc0\x00\xc9\x3b\xc0\x00\xcb",
.size = 11
},
{
.data = "\xc0\x08\x08\x9e\x19\x7a\x44\x9e\x19\x7a\x45",
.size = 11
},
{
.data = "\xc0\x08\x14\x00\x00\x0b\x5a\x00\x00\x3f\x89\x00\x00"
"\x3f\x94\x00\x00\x48\xce\x00\x00\xa2\xda",
.size = 23
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\x40",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\x42",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\xb2",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\xd3",
.size = 11
},
{
.data = "\xe0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\x10",
.size = 11
},
{
.data = "\xe0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\x1e",
.size = 11
},
{
.data = "\xe0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\x29",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\xb6",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x01\xe0",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x02\x8b",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x02\xc5",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x03\xc2",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x04\x09",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x04\xe4",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x05\x57",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x05\x92",
.size = 11
},
{
.data = "\xc0\x10\x08\x00\x02\xfd\xe8\x00\x00\x2a\xf8",
.size = 11
},
{
.data = "\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03",
.size = 15
},
{
.data = "\xc0\x20\x18\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03",
.size = 27
},
{
.data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x00\xed\x5f\x00\x00\xed\x5f\x00\x00"
"\xed\x5f",
.size = 39
},
{
.data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x16\x49\x00\x03\x16\x49\x00\x00"
"\x00\x64",
.size = 39
},
{
.data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x16\xa9\x00\x03\x16\xa9\x00\x00"
"\x00\x00",
.size = 39
},
{
.data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x24\x92\x00\x00\x00\x03\x00\x00"
"\x00\x01",
.size = 39
},
{
.data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x25\x4b\x00\x00\x00\xc8\x00\x00"
"\x00\x00",
.size = 39
},
{
.data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x26\x8f\x00\x00\x01\x2c\x00\x00"
"\x00\x00",
.size = 39
},
{
.data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x26\xa3\x00\x00\x02\x58\x00\x03"
"\x26\xa3",
.size = 39
},
{
.data = "\xe0\x20\x24\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x33\xc8\x00\x00\x07\xd0\x00\x00"
"\x00\x1e",
.size = 39
},
{
.data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x00\xdf\x1e\x00\x00\x00\x1e\x00\x00"
"\x00\x00\x00\x00\xdf\x1e\x00\x00\x00\x1e\x00\x00"
"\x00\x0a",
.size = 51
},
{
.data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x1c\xe3\x00\x00\x00\x01\x00\x00"
"\x00\x00\x00\x03\x1c\xe3\x00\x00\x00\x01\x00\x00"
"\x00\x02",
.size = 51
},
{
.data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x26\xa3\x00\x00\x02\x58\x00\x03"
"\x26\xa3\x00\x03\x26\xa3\x00\x03\x26\xa3\x00\x00"
"\x00\xc8",
.size = 51
},
{
.data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x27\xdd\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x03\x27\xdd\x00\x00\x00\x00\x00\x00"
"\x23\x49",
.size = 51
},
{
.data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x27\xdd\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x03\x27\xdd\x00\x00\x00\x00\x00\x00"
"\xc2\x51",
.size = 51
},
{
.data = "\xe0\x20\x30\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x28\xe8\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x03\x28\xe8\x00\x00\x00\x01\x00\x00"
"\x00\x00",
.size = 51
},
{
.data = "\xe0\x20\x3c\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x02\x1a\xcd\x00\x00\xfc\x00\x00\x00"
"\x00\x0b\x00\x02\x1a\xcd\x00\x00\xfc\x00\x00\x00"
"\x00\x15\x00\x02\x1a\xcd\x00\x00\xff\xed\x00\x00"
"\x00\x01",
.size = 63
},
{
.data = "\xe0\x20\x3c\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x16\xa9\x00\x00\x00\x00\x00\x03"
"\x35\x3a\x00\x03\x16\xa9\x00\x03\x16\xa9\x00\x00"
"\x00\x00\x00\x03\x26\xa3\x00\x03\x26\xa3\x00\x00"
"\x03\x84",
.size = 63
},
{
.data = "\xe0\x20\x3c\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x16\xa9\x00\x03\x16\xa9\x00\x03"
"\x16\xa9\x00\x03\x26\xa3\x00\x00\x01\x2c\x00\x00"
"\x03\xe7\x00\x03\x26\xa3\x00\x00\x02\x58\x00\x03"
"\x26\xa3",
.size = 63
},
{
.data = "\xe0\x20\xb4\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x01\x00\x00\xd0\x5b\x00\x00\x00\x0b\x00\x00"
"\x00\x03\x00\x03\x22\xd3\x00\x00\x00\x0a\x00\x00"
"\x00\x0a\x00\x03\x22\xd3\x00\x00\x00\x0a\x00\x00"
"\x00\xc9\x00\x03\x22\xd3\x00\x00\x00\x0a\x00\x00"
"\x00\xca\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\x0b\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\x64\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\x65\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\x66\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\x67\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\x68\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\xc8\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\xcf\x00\x03\x22\xd3\x00\x00\x00\x14\x00\x00"
"\x00\xd0\x00\x03\x22\xd3\x00\x00\x00\x79\x00\x00"
"\x00\x00",
.size = 183
},
{
.data = "\xc0\x10\x08\x43\x00\x00\x00\x00\x00\x00\x02",
.size = 11,
.expected = "",
.expsize = 0,
},
{
.data = "\xc0\x10\x10\x00\x02\xfc\x00\x00\x00\x00\x40"
"\x43\x00\x00\x00\x00\x00\x00\x02",
.size = 19,
.expected = "\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\x40",
.expsize = 11,
},
{
.data = "\xc0\x10\x18\x00\x02\xfc\x00\x00\x00\x00\x40"
"\x43\x00\x00\x00\x00\x00\x00\x02"
"\x06\x00\x00\x00\x00\x00\x00\x01",
.size = 27,
.expected = "\xc0\x10\x10\x06\x00\x00\x00\x00\x00\x00\x01"
"\x00\x02\xfc\x00\x00\x00\x00\x40",
.expsize = 19,
},
{
.data = "\xe0\x08\x04\x4e\x97\x00\x03"
"\xc0\x10\x08\x43\x00\x00\x00\x00\x00\x00\x02",
.size = 7 + 11,
.expected = "\xe0\x08\x04\x4e\x97\x00\x03",
.expsize = 7,
},
{
.data = "\xe0\x08\x04\x4e\x97\x00\x03"
"\xc0\x10\x10\x00\x02\xfc\x00\x00\x00\x00\x40"
"\x43\x00\x00\x00\x00\x00\x00\x02",
.size = 7 + 19,
.expected = "\xe0\x08\x04\x4e\x97\x00\x03"
"\xc0\x10\x08\x00\x02\xfc\x00\x00\x00\x00\x40",
.expsize = 7 + 11,
},
{
.data = "\xc0\x10\x08\x43\x00\x00\x00\x00\x00\x00\x02"
"\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b"
"\x00\x00\x00\x03",
.size = 11 + 15,
.expected = "\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b"
"\x00\x00\x00\x03",
.expsize = 15,
},
{
.data = "\xe0\x08\x04\x4e\x97\x00\x03"
"\xc0\x10\x08\x43\x00\x00\x00\x00\x00\x00\x02"
"\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b"
"\x00\x00\x00\x03",
.size = 7 + 11 + 15,
.expected = "\xe0\x08\x04\x4e\x97\x00\x03"
"\xc0\x20\x0c\x00\x00\xd0\x5b\x00\x00\x00\x0b"
"\x00\x00\x00\x03",
.expsize = 7 + 15,
},
};
struct community filters[] = {
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = COMMUNITY_WELLKNOWN,
.data2 = COMMUNITY_NO_ADVERTISE
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = COMMUNITY_WELLKNOWN,
.data2 = COMMUNITY_NO_EXPORT
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = COMMUNITY_WELLKNOWN,
.data2 = COMMUNITY_NO_EXPSUBCONFED
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 22512,
.data2 = 1
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 22512,
.data2 = 42
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 22512,
.data2 = 65366
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 1,
.data2 = 22512
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 42,
.data2 = 22512
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 65366,
.data2 = 22512
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 22512,
.data2 = 22512,
.data3 = 22512
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 22512,
.data2 = 42,
.data3 = 22512
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 22512,
.data2 = 42,
.data3 = 42
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 42,
.data2 = 22512,
.data3 = 22512
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 42,
.data2 = 42,
.data3 = 22512
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 42,
.data2 = 22512,
.data3 = 42
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 65366,
.data2 = 22512,
.data3 = 22512
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 22512,
.data2 = 65366,
.data3 = 22512
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 22512,
.data2 = 65366,
.data3 = 65366
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 42,
.data2 = 42,
.data3 = 42
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 65366,
.data2 = 65366,
.data3 = 65366
},
{
.flags = COMMUNITY_TYPE_BASIC | (COMMUNITY_ANY << 16),
.data1 = COMMUNITY_WELLKNOWN,
},
{
.flags = COMMUNITY_TYPE_BASIC | (COMMUNITY_ANY << 16),
.data1 = 22512,
},
{
.flags = COMMUNITY_TYPE_BASIC | (COMMUNITY_ANY << 8),
.data2 = 22512
},
{
.flags = COMMUNITY_TYPE_LARGE | (COMMUNITY_ANY << 8) |
(COMMUNITY_ANY << 16) | (COMMUNITY_ANY << 24),
},
{
.flags = COMMUNITY_TYPE_LARGE | (COMMUNITY_ANY << 16) |
(COMMUNITY_ANY << 24),
.data1 = 22512,
},
{
.flags = COMMUNITY_TYPE_EXT,
.data3 = EXT_COMMUNITY_TRANS_TWO_AS << 8 | 0x02,
.data1 = 22512,
.data2 = 42,
},
{
.flags = COMMUNITY_TYPE_EXT,
.data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02,
.data1 = 22512,
.data2 = 42,
},
{
.flags = COMMUNITY_TYPE_EXT,
.data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02,
.data1 = 22512,
.data2 = 15,
},
{
.flags = COMMUNITY_TYPE_BASIC | (COMMUNITY_LOCAL_AS << 8) |
(COMMUNITY_NEIGHBOR_AS << 16),
},
{
.flags = COMMUNITY_TYPE_LARGE | (COMMUNITY_LOCAL_AS << 8) |
(COMMUNITY_NEIGHBOR_AS << 24),
},
{
.flags = COMMUNITY_TYPE_EXT | (COMMUNITY_LOCAL_AS << 8) |
(COMMUNITY_NEIGHBOR_AS << 16),
.data3 = EXT_COMMUNITY_TRANS_TWO_AS << 8 | 0x02,
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 42,
.data2 = 22512,
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 65366,
.data2 = 22512,
},
{
.flags = COMMUNITY_TYPE_BASIC,
.data1 = 42,
.data2 = 65366,
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 42,
.data2 = 0,
.data3 = 22512,
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 196618,
.data2 = 0,
.data3 = 22512,
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 22512,
.data2 = 0,
.data3 = 196618,
},
{
.flags = COMMUNITY_TYPE_LARGE,
.data1 = 196618,
.data2 = 0,
.data3 = 424242,
},
{
.flags = COMMUNITY_TYPE_EXT,
.data1 = 42,
.data2 = 22512,
.data3 = EXT_COMMUNITY_TRANS_TWO_AS << 8 | 0x02,
},
{
.flags = COMMUNITY_TYPE_EXT,
.data1 = 42,
.data2 = 22512,
.data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02,
},
{
.flags = COMMUNITY_TYPE_EXT,
.data1 = 196618,
.data2 = 22512,
.data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02,
},
{
.flags = COMMUNITY_TYPE_EXT,
.data1 = 22512,
.data2 = 196618,
.data3 = EXT_COMMUNITY_TRANS_TWO_AS << 8 | 0x02,
},
{
.flags = COMMUNITY_TYPE_EXT | (COMMUNITY_ANY << 24),
},
{
.flags = COMMUNITY_TYPE_EXT | (COMMUNITY_ANY << 8),
.data3 = (-1 << 8) | 0x02,
},
{
.flags = COMMUNITY_TYPE_EXT | (COMMUNITY_ANY << 8),
.data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02,
},
{
.flags = COMMUNITY_TYPE_EXT | (COMMUNITY_ANY << 16),
.data3 = EXT_COMMUNITY_TRANS_FOUR_AS << 8 | 0x02,
.data1 = 196618,
},
};
struct testfilter {
int in[8];
int delete;
int match;
int mout;
int ncomm;
int next;
int nlarge;
struct rde_peer *peer;
} testfilters[] = {
{
.in = { 1, 2, -1 },
.match = 1,
.mout = 1,
.delete = 1,
},
{
.in = { 1, 2, -1 },
.match = 2,
.mout = 1,
.delete = 2,
},
{
.in = { 1, 2, -1 },
.match = 20,
.mout = 1,
.delete = 20,
},
{
.in = { 1, 2, 1, 2, -1 },
.match = 5,
.mout = 0,
.delete = 5,
},
{
.in = { 3, 4, 5, 6, 7, 8, -1 },
.match = 5,
.mout = 1,
.delete = 5,
},
{
.in = { 3, 4, 5, 6, 7, 8, -1 },
.match = 20,
.mout = 0,
.delete = -1,
},
{
.in = { 3, 4, 5, 6, 7, 8, -1 },
.match = 21,
.mout = 1,
.delete = 21,
},
{
.in = { 3, 4, 5, 6, 7, 8, -1 },
.match = 22,
.mout = 1,
.delete = 22,
},
{
.in = { 17, 18, 19, -1 },
.match = 22,
.mout = 0,
.delete = 17,
},
{
.in = { 17, 18, 19, 7, 8, -1 },
.match = 18,
.mout = 1,
.delete = 19,
},
{
.in = { 1, 3, 5, -1 },
.match = 23,
.mout = 0,
.delete = -1,
},
{
.in = { 1, 3, 5, 17, -1 },
.match = 23,
.mout = 1,
.delete = 23,
},
{
.in = { 1, 3, 5, 19, -1 },
.match = 24,
.mout = 0,
.delete = -1,
},
{
.in = { 19, 18, 17, -1 },
.match = 24,
.mout = 1,
.delete = 24,
},
{
.in = { 25, 26, -1 },
.match = 25,
.mout = 1,
.delete = 25,
},
{
.in = { 25, 26, -1 },
.match = 26,
.mout = 1,
.delete = 26,
},
{
.in = { 17, 0, -1 },
.match = 0,
.mout = 1,
.delete = 0,
},
{
.in = { -1 },
.match = 21,
.mout = 0,
.delete = -1,
.ncomm = 0 + 1,
.next = 0 + 1,
.nlarge = 0 + 1,
},
{
.in = { 0, 3, 6, -1 },
.match = -1,
.delete = -1,
.ncomm = 3 + 1,
.next = 0 + 1,
.nlarge = 0 + 1,
},
{
.in = { 0, 25, 26, 19, -1 },
.match = -1,
.delete = -1,
.ncomm = 1 + 1,
.next = 2 + 1,
.nlarge = 1 + 1,
},
{
.in = { 0, 10, 26, -1 },
.match = -1,
.delete = -1,
.ncomm = 1 + 1,
.next = 1 + 1,
.nlarge = 1 + 1,
},
{
.in = { 28, -1 },
.match = 28,
.mout = 1,
.delete = 28,
.peer = &peer,
},
{
.in = { 31, -1 },
.match = 28,
.mout = 1,
.delete = 28,
.peer = &peer,
},
{
.in = { 31, -1 },
.match = 28,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 31, -1 },
.match = 28,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 31, -1 },
.match = 28,
.mout = 0,
.peer = &peer_b4,
},
{
.in = { 32, -1 },
.match = 28,
.mout = 0,
.peer = &peer,
},
{
.in = { 32, -1 },
.match = 28,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 32, -1 },
.match = 28,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 32, -1 },
.match = 28,
.mout = 0,
.peer = &peer_b4,
},
{
.in = { 33, -1 },
.match = 28,
.mout = 0,
.peer = &peer,
},
{
.in = { 33, -1 },
.match = 28,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 33, -1 },
.match = 28,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 33, -1 },
.match = 28,
.mout = 0,
.peer = &peer_b4,
},
{
.in = { 29, -1 },
.match = 29,
.mout = 1,
.delete = 29,
.peer = &peer,
},
{
.in = { 29, -1 },
.match = 29,
.mout = 1,
.delete = 29,
.peer = &peer_l4,
},
{
.in = { 29, -1 },
.match = 29,
.mout = 1,
.delete = 29,
.peer = &peer_r4,
},
{
.in = { 29, -1 },
.match = 29,
.mout = 1,
.delete = 29,
.peer = &peer_b4,
},
{
.in = { 34, -1 },
.match = 29,
.mout = 1,
.peer = &peer,
},
{
.in = { 34, -1 },
.match = 29,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 34, -1 },
.match = 29,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 34, -1 },
.match = 29,
.mout = 0,
.peer = &peer_b4,
},
{
.in = { 35, -1 },
.match = 29,
.mout = 0,
.peer = &peer,
},
{
.in = { 35, -1 },
.match = 29,
.mout = 1,
.peer = &peer_l4,
},
{
.in = { 35, -1 },
.match = 29,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 35, -1 },
.match = 29,
.mout = 0,
.peer = &peer_b4,
},
{
.in = { 36, -1 },
.match = 29,
.mout = 0,
.peer = &peer,
},
{
.in = { 36, -1 },
.match = 29,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 36, -1 },
.match = 29,
.mout = 1,
.peer = &peer_r4,
},
{
.in = { 36, -1 },
.match = 29,
.mout = 0,
.peer = &peer_b4,
},
{
.in = { 37, -1 },
.match = 29,
.mout = 0,
.peer = &peer,
},
{
.in = { 37, -1 },
.match = 29,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 37, -1 },
.match = 29,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 37, -1 },
.match = 29,
.mout = 1,
.peer = &peer_b4,
},
{
.in = { 30, -1 },
.match = 30,
.mout = 1,
.delete = 30,
.peer = &peer,
},
{
.in = { 30, -1 },
.match = 30,
.mout = 1,
.delete = 30,
.peer = &peer_l4,
},
{
.in = { 30, -1 },
.match = 30,
.mout = 1,
.delete = 30,
.peer = &peer_r4,
},
{
.in = { 38, -1 },
.match = 30,
.mout = 1,
.peer = &peer,
},
{
.in = { 38, -1 },
.match = 30,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 38, -1 },
.match = 30,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 39, -1 },
.match = 30,
.mout = 1,
.peer = &peer,
},
{
.in = { 39, -1 },
.match = 30,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 39, -1 },
.match = 30,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 40, -1 },
.match = 30,
.mout = 0,
.peer = &peer,
},
{
.in = { 40, -1 },
.match = 30,
.mout = 1,
.peer = &peer_l4,
},
{
.in = { 40, -1 },
.match = 30,
.mout = 0,
.peer = &peer_r4,
},
{
.in = { 41, -1 },
.match = 30,
.mout = 0,
.peer = &peer,
},
{
.in = { 41, -1 },
.match = 30,
.mout = 0,
.peer = &peer_l4,
},
{
.in = { 41, -1 },
.match = 30,
.mout = 1,
.peer = &peer_r4,
},
{
.in = { 38, -1 },
.match = 30,
.mout = 1,
.peer = &peer,
},
{
.in = { 38, 39, 40, -1 },
.match = 42,
.mout = 1,
.delete = 42,
.next = 0 + 1,
.peer = &peer,
},
{
.in = { 38, 39, 40, -1 },
.match = 43,
.mout = 1,
.delete = 43,
.next = 0 + 1,
.peer = &peer,
},
{
.in = { 39, 40, -1 },
.match = 44,
.mout = 1,
.delete = 44,
.next = 0 + 1,
.peer = &peer,
},
{
.in = { 38, -1 },
.match = 44,
.mout = 0,
.peer = &peer,
},
{
.in = { 40, -1 },
.match = 45,
.mout = 1,
.delete = 45,
.next = 0 + 1,
.peer = &peer,
},
{
.in = { 38, 39, 41, -1 },
.match = 45,
.mout = 0,
.peer = &peer,
},
};