summaryrefslogtreecommitdiffstats
path: root/src/vnet/dpo
AgeCommit message (Expand)AuthorFilesLines
2018-11-14Remove c-11 memcpy checks from perf-critical codeDave Barach2-3/+3
2018-11-02vlib: define minimum chained buffer segment sizeDamjan Marion1-1/+2
2018-10-23c11 safe string handling supportDave Barach8-8/+8
2018-10-16FIB: use vlib-log for debuggingNeale Ranns3-33/+39
2018-10-16Sticky Load-balanceNeale Ranns2-24/+130
2018-10-08replicate trace fixNeale Ranns1-2/+6
2018-10-01mroute routers in the stats segmentNeale Ranns1-1/+6
2018-09-20Route counters in the stats segmentNeale Ranns1-1/+10
2018-09-14BIER API and load-balancing fixesNeale Ranns1-2/+2
2018-08-30SR-MPLS: fixes and testsNeale Ranns1-1/+1
2018-08-22show command for lookup DPOsNeale Ranns1-0/+40
2018-08-03loop counter to prevent infiinte number of look ups per-packetNeale Ranns1-1/+84
2018-07-19Remove unused argument to vlib_feature_nextDamjan Marion1-6/+3
2018-07-11avoid using thread local storage for thread indexDamjan Marion1-1/+1
2018-06-26node functions cannot be always_inlineDamjan Marion1-10/+10
2018-05-26Fix interface-rx-dpo-l2 node to setup l2_len in vnet bufferJohn Lo1-4/+16
2018-05-04Harmonize vec/pool_get_aligned object sizes and alignment requestsDave Barach9-0/+53
2018-04-24memory leakKingwel Xie1-0/+3
2018-04-12Fixes for 'make UNATTENDED=yes CC=clang CXX=clang verify'Neale Ranns1-10/+1
2018-04-09DVR: save the rewrite length in packet meta-data for featuresNeale Ranns1-3/+9
2018-03-20FIB Interpose SourceNeale Ranns5-26/+114
2018-03-19Coverity found bugs in recent MPLS changesNeale Ranns2-2/+2
2018-03-19FIX: Fixed ip6_fib_dump api function response.Dmitry Vakhrushev2-0/+8
2018-03-15Add a helper function to fetch vlib node index for already stacked dposVijayabhaskar Katamreddy2-0/+40
2018-03-09MPLS Unifom modeNeale Ranns5-329/+1150
2018-03-05IP6 link-local tableNeale Ranns4-0/+245
2018-02-07Refactor vlib_buffer flagsDamjan Marion1-6/+6
2018-02-06BIER: fix support for longer bit-string lengthsNeale Ranns1-1/+2
2018-01-09DVR: run L3 output featuresNeale Ranns6-436/+661
2017-12-20L2 EmulationNeale Ranns1-1/+1
2017-12-09BIER in non-MPLS netowrksNeale Ranns2-0/+11
2017-12-06Label stack size exceeded fixNeale Ranns2-1/+19
2017-11-14NULL-terminate load_balance_nsh_nodes[]Gabriel Ganne1-0/+1
2017-11-09BIERNeale Ranns5-12/+86
2017-11-03NAT64: Input feature arc on virtual interface via interface RX DPO.Ole Troan2-2/+2
2017-10-31Refactor IP input checks for re-use at MPLS dispositionNeale Ranns1-20/+54
2017-10-25L3 proxy FIB source for container networkingAndrew Yourtchenko4-3/+270
2017-10-14change format_get_indent() to use u32 instead of uwordGabriel Ganne1-1/+1
2017-10-14Source Lookup progammable via APINeale Ranns1-2/+2
2017-10-05Distributed Virtual Router SupportNeale Ranns4-1/+436
2017-10-04[aarch64] Fixes CLI crashes on dpaa2 platform.Christophe Fontaine5-8/+8
2017-09-11FIB table add/delete APINeale Ranns2-8/+24
2017-08-21PPPoE usses a midchain adjacency stack on an interface-tx DPONeale Ranns7-506/+670
2017-08-08L2 over MPLSNeale Ranns4-9/+96
2017-06-30VPP debug image with worker threads hit assert on adding IP route with traffi...Neale Ranns1-1/+16
2017-05-26MPLS lookup DPO does not pop the label (nor does it handle replicate)Neale Ranns1-6/+41
2017-05-25MPLS hash function improvementsNeale Ranns1-1/+1
2017-05-24Missing VLIB node for IPv6 disposition from mcast MPLS LSPNeale Ranns1-1/+23
2017-05-23Labelled attached paths via an MPLS tunnelNeale Ranns1-0/+3
2017-05-10completelly deprecate os_get_cpu_number, replace new occurencesDamjan Marion1-4/+4
non-zero * return value stop walk. */ typedef int (*nat64_pool_addr_walk_fn_t) (snat_address_t * addr, void *ctx); /** * @brief Walk NAT64 pool. * * @param fn The function to invoke on each entry visited. * @param ctx A context passed in the visit function. */ void nat64_pool_addr_walk (nat64_pool_addr_walk_fn_t fn, void *ctx); /** * @brief NAT64 pool address from specific (DHCP addressed) interface. * * @param sw_if_index Index of the interface. * @param is_add 1 if add, 0 if delete. * * @returns 0 on success, non-zero value otherwise. */ int nat64_add_interface_address (u32 sw_if_index, int is_add); /** * @brief Enable/disable NAT64 feature on the interface. * * @param sw_if_index Index of the interface. * @param is_inside 1 if inside, 0 if outside. * @param is_add 1 if add, 0 if delete. * * @returns 0 on success, non-zero value otherwise. */ int nat64_add_del_interface (u32 sw_if_index, u8 is_inside, u8 is_add); /** * @brief Call back function when walking interfaces with NAT64 feature, * non-zero return value stop walk. */ typedef int (*nat64_interface_walk_fn_t) (snat_interface_t * i, void *ctx); /** * @brief Walk NAT64 interfaces. * * @param fn The function to invoke on each entry visited. * @param ctx A context passed in the visit function. */ void nat64_interfaces_walk (nat64_interface_walk_fn_t fn, void *ctx); /** * @brief Initialize NAT64. * * @param vm vlib main. * * @return error code. */ clib_error_t *nat64_init (vlib_main_t * vm); /** * @brief Add/delete static NAT64 BIB entry. * * @param in_addr Inside IPv6 address. * @param out_addr Outside IPv4 address. * @param in_port Inside port number. * @param out_port Outside port number. * @param proto L4 protocol. * @param vrf_id VRF id of tenant. * @param is_add 1 if add, 0 if delete. * * @returns 0 on success, non-zero value otherwise. */ int nat64_add_del_static_bib_entry (ip6_address_t * in_addr, ip4_address_t * out_addr, u16 in_port, u16 out_port, u8 proto, u32 vrf_id, u8 is_add); /** * @brief Alloce IPv4 address and port pair from NAT64 pool. * * @param fib_index FIB index of tenant. * @param proto L4 protocol. * @param addr Allocated IPv4 address. * @param port Allocated port number. * @param thread_index Thread index. * * @returns 0 on success, non-zero value otherwise. */ int nat64_alloc_out_addr_and_port (u32 fib_index, snat_protocol_t proto, ip4_address_t * addr, u16 * port, u32 thread_index); /** * @brief Set UDP session timeout. * * @param timeout Timeout value in seconds (if 0 reset to default value 300sec). * * @returns 0 on success, non-zero value otherwise. */ int nat64_set_udp_timeout (u32 timeout); /** * @brief Get UDP session timeout. * * @returns UDP session timeout in seconds. */ u32 nat64_get_udp_timeout (void); /** * @brief Set ICMP session timeout. * * @param timeout Timeout value in seconds (if 0 reset to default value 60sec). * * @returns 0 on success, non-zero value otherwise. */ int nat64_set_icmp_timeout (u32 timeout); /** * @brief Get ICMP session timeout. * * @returns ICMP session timeout in seconds. */ u32 nat64_get_icmp_timeout (void); /** * @brief Set TCP session timeouts. * * @param trans Transitory timeout in seconds (if 0 reset to default value 240sec). * @param est Established timeout in seconds (if 0 reset to default value 7440sec). * * @returns 0 on success, non-zero value otherwise. */ int nat64_set_tcp_timeouts (u32 trans, u32 est); /** * @brief Get TCP transitory timeout. * * @returns TCP transitory timeout in seconds. */ u32 nat64_get_tcp_trans_timeout (void); /** * @brief Get TCP established timeout. * * @returns TCP established timeout in seconds. */ u32 nat64_get_tcp_est_timeout (void); /** * @brief Reset NAT64 session timeout. * * @param ste Session table entry. * @param vm VLIB main. **/ void nat64_session_reset_timeout (nat64_db_st_entry_t * ste, vlib_main_t * vm); /** * @brief Set NAT64 TCP session state. * * @param ste Session table entry. * @param tcp TCP header. * @param is_ip6 1 if IPv6 packet, 0 if IPv4. */ void nat64_tcp_session_set_state (nat64_db_st_entry_t * ste, tcp_header_t * tcp, u8 is_ip6); /** * @brief Add/delete NAT64 prefix. * * @param prefix NAT64 prefix. * @param plen Prefix length. * @param vrf_id VRF id of tenant. * @param is_add 1 if add, 0 if delete. * * @returns 0 on success, non-zero value otherwise. */ int nat64_add_del_prefix (ip6_address_t * prefix, u8 plen, u32 vrf_id, u8 is_add); /** * @brief Call back function when walking addresses in NAT64 prefixes, non-zero * return value stop walk. */ typedef int (*nat64_prefix_walk_fn_t) (nat64_prefix_t * pref64, void *ctx); /** * @brief Walk NAT64 prefixes. * * @param fn The function to invoke on each entry visited. * @param ctx A context passed in the visit function. */ void nat64_prefix_walk (nat64_prefix_walk_fn_t fn, void *ctx); /** * Compose IPv4-embedded IPv6 addresses. * @param ip6 IPv4-embedded IPv6 addresses. * @param ip4 IPv4 address. * @param fib_index Tenant FIB index. */ void nat64_compose_ip6 (ip6_address_t * ip6, ip4_address_t * ip4, u32 fib_index); /** * Extract IPv4 address from the IPv4-embedded IPv6 addresses. * * @param ip6 IPv4-embedded IPv6 addresses. * @param ip4 IPv4 address. * @param fib_index Tenant FIB index. */ void nat64_extract_ip4 (ip6_address_t * ip6, ip4_address_t * ip4, u32 fib_index); /** * @brief Set NAT64 hash tables configuration. * * @param bib_buckets Number of BIB hash buckets. * @param bib_memory_size Memory size of BIB hash. * @param st_buckets Number of session table hash buckets. * @param st_memory_size Memory size of session table hash. */ void nat64_set_hash (u32 bib_buckets, u32 bib_memory_size, u32 st_buckets, u32 st_memory_size); /** * @brief Get worker thread index for NAT64 in2out. * * @param addr IPv6 src address. * * @returns worker thread index. */ u32 nat64_get_worker_in2out (ip6_address_t * addr); /** * @brief Get worker thread index for NAT64 out2in. * * @param ip IPv4 header. * * @returns worker thread index. */ u32 nat64_get_worker_out2in (ip4_header_t * ip); #endif /* __included_nat64_h__ */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */