aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_bfd.py
AgeCommit message (Expand)AuthorFilesLines
2017-03-13Add MAC address check in ethernet-input node if interface in L3 modeJohn Lo1-1/+10
2017-03-08make test: split into basic and extended testsKlement Sekera1-2/+33
2017-03-02BFD: command line interfaceKlement Sekera1-20/+559
2017-02-26BFD: echo functionKlement Sekera1-48/+429
2017-02-17BFD: put session admin-up/admin-downKlement Sekera1-8/+36
2017-02-15BFD: loop back echo packetsKlement Sekera1-19/+103
2017-02-14BFD: respect remote demand modeKlement Sekera1-328/+509
2017-02-08make test: BFD tests speedupKlement Sekera1-2/+4
2017-02-08BFD: modify session parametersKlement Sekera1-13/+151
2017-02-02BFD: SHA1 authenticationKlement Sekera1-37/+696
2017-01-25make test: elegantly handle expected API failuresKlement Sekera1-6/+3
2017-01-17BFD: IPv6 supportKlement Sekera1-79/+142
2017-01-17make test: add checkstyle targetKlement Sekera1-2/+0
2017-01-11BFD: fix bfd_udp_add APIKlement Sekera1-8/+25
2017-01-03BFD: immediately honor reduced remote_min_rx intervalKlement Sekera1-24/+62
2016-12-23make test: improve handling of packet capturesKlement Sekera1-4/+4
2016-12-19make test: work around timing issue in bfd testKlement Sekera1-1/+1
2016-12-16make test: improve robustness and performanceKlement Sekera1-1/+1
2016-12-09BFD: handle timing wheel prematurely firing eventsKlement Sekera1-3/+3
2016-12-09BFD: fix timing in the main loopKlement Sekera1-34/+35
2016-12-08BFD: improve ip header handling, fix assertKlement Sekera1-0/+1
2016-12-07BFD: basic asynchronous session up/downKlement Sekera1-0/+273
protocolIdentifier, 1) #define foreach_ipfix_ip6_field \ _(ip6->src_address.as_u8, \ ((u32[]){0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF}), \ sourceIPv6Address, 16) \ _(ip6->dst_address.as_u8, \ ((u32[]){0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF}), \ destinationIPv6Address, 16) \ _(ip6->protocol, ((u8[]){0xFF}), protocolIdentifier, 1) #define foreach_ipfix_tcpudp_field \ _(tcpudp->src_port, ((u16[]){0xFFFF}), sourceTransportPort, 2) \ _(tcpudp->dst_port, ((u16[]){0xFFFF}), destinationTransportPort, 2) #define foreach_ipfix_tcp_field \ _(tcpudp->src_port, ((u16[]){0xFFFF}), tcpSourcePort, 2) \ _(tcpudp->dst_port, ((u16[]){0xFFFF}), tcpDestinationPort, 2) #define foreach_ipfix_udp_field \ _(tcpudp->src_port, ((u16[]){0xFFFF}), udpSourcePort, 2) \ _(tcpudp->dst_port, ((u16[]){0xFFFF}), udpDestinationPort, 2) #define foreach_ipfix_transport_protocol_field \ switch (transport_protocol) { \ case 255: \ foreach_ipfix_tcpudp_field; \ break; \ case 6: \ foreach_ipfix_tcp_field; \ break; \ case 17: \ foreach_ipfix_udp_field; \ break; \ } #define foreach_ipfix_field \ if (ip_version == 4) { \ ip = (ip4_header_t *)ip_start; \ tcpudp = (tcpudp_header_t *)(ip+1); \ foreach_ipfix_ip4_field; \ } else { \ ip6 = (ip6_header_t *)ip_start; \ tcpudp = (tcpudp_header_t *)(ip6+1); \ foreach_ipfix_ip6_field; \ } \ foreach_ipfix_transport_protocol_field typedef struct { u32 classify_table_index; u8 ip_version; u8 transport_protocol; } ipfix_classify_table_t; typedef struct { u32 domain_id; u16 src_port; ipfix_classify_table_t * tables; } flow_report_classify_main_t; extern flow_report_classify_main_t flow_report_classify_main; static_always_inline u8 ipfix_classify_table_index_valid (u32 index) { flow_report_classify_main_t * fcm = &flow_report_classify_main; return index < vec_len(fcm->tables) && fcm->tables[index].classify_table_index != ~0; } static_always_inline ipfix_classify_table_t * ipfix_classify_add_table (void) { flow_report_classify_main_t * fcm = &flow_report_classify_main; u32 i; for (i = 0; i < vec_len(fcm->tables); i++) if (!ipfix_classify_table_index_valid(i)) return &fcm->tables[i]; u32 index = vec_len(fcm->tables); vec_validate(fcm->tables, index); return &fcm->tables[index]; } static_always_inline void ipfix_classify_delete_table (u32 index) { flow_report_classify_main_t * fcm = &flow_report_classify_main; ASSERT (index < vec_len(fcm->tables)); ASSERT (fcm->tables[index].classify_table_index != ~0); fcm->tables[index].classify_table_index = ~0; } u8 * ipfix_classify_template_rewrite (flow_report_main_t * frm, flow_report_t * fr, ip4_address_t * collector_address, ip4_address_t * src_address, u16 collector_port); vlib_frame_t * ipfix_classify_send_flows (flow_report_main_t * frm, flow_report_t * fr, vlib_frame_t * f, u32 * to_next, u32 node_index); #endif /* __included_flow_report_classify_h__ */