summaryrefslogtreecommitdiffstats
path: root/src/vnet/interface.h
AgeCommit message (Expand)AuthorFilesLines
2018-04-09L2: no-flood interface type in the Bridge-DomainNeale Ranns1-1/+5
2018-04-09plugins: unload plugin if early init failsDamjan Marion1-0/+41
2018-04-04Detailed stats collection featureNeale Ranns1-15/+15
2018-03-19Use x(void) not x() in new interface stats codeNeale Ranns1-3/+3
2018-03-19Interface Unicast, Multicast and Broadcast stats on the APINeale Ranns1-1/+35
2018-03-09Coordinate known Ethernet speeds with Linux kernel and DPDKLee Roberts1-6/+16
2018-02-26vnet: add 25G interface speed flagDamjan Marion1-2/+4
2018-02-13vnet:remove duplicate interface function macroEyal Bari1-15/+3
2018-01-24Improve tunnel interface creation performanceJohn Lo1-0/+4
2017-08-01P2P EthernetPavel Kotucek1-0/+15
2017-07-18TCP/UDP checksum offload APIDave Barach1-0/+3
2017-07-13Fix crash with worker threads on 4K VXLAN/BD setup (VPP-907)John Lo1-6/+2
2017-07-12Deprecate support for flattened output nodesDamjan Marion1-3/+0
2017-06-21Introduce default rx mode for device driversDamjan Marion1-0/+2
2017-05-10vnet: introduce error state for sw interfacesDamjan Marion1-0/+3
2017-05-10device: Add callback for set interface rx-modeSteven1-9/+17
2017-05-02Add interface rx mode commands, unify rx mode and placement CLIDamjan Marion1-0/+15
2017-04-10Common device-input interrupt infraDamjan Marion1-0/+3
2017-04-06Use thread local storage for thread indexDamjan Marion1-1/+1
2017-03-20vnet: add device-input threadplacement infraDamjan Marion1-0/+6
2017-03-07CLI: hide deleted interfacesEyal Bari1-0/+3
2017-02-13Basic support for LISP-GPE encapsulated NSH packetsFlorin Coras1-1/+3
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion1-0/+658
\ _(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, ipfix_report_element_t * elts, u32 n_elts, u32 * stream_index); 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__ */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */