summaryrefslogtreecommitdiffstats
path: root/src/vnet/ipsec
AgeCommit message (Expand)AuthorFilesLines
2020-11-26gre: Move to new API generated types/messagesNeale Ranns1-1/+1
2020-11-25ipsec: A P2MP ipsec interface is NBMANeale Ranns1-0/+1
2020-11-09ipsec: fix unformat typesBenoît Ganne1-2/+2
2020-11-06ipsec: add support for tx-table-id in cli + exampleBenoît Ganne2-3/+17
2020-11-02ipsec: Tunnel SA DSCP behaviourNeale Ranns9-41/+342
2020-10-28misc: Break the big IP header files to improve compile timeNeale Ranns1-0/+1
2020-10-24ipsec: remove pending nodeFan Zhang3-104/+127
2020-10-21ipsec: support for multipoint on ipsec interfacesNeale Ranns4-6/+63
2020-10-21ipsec: Add to the SA info directly in the bihashNeale Ranns5-81/+83
2020-10-21misc: minimize dependencies on udp.hFlorin Coras4-4/+3
2020-10-20ipsec: Stack the adj from the destination in the SA's TX tableNeale Ranns1-1/+1
2020-10-19ipsec: Layout and prefetching of SA structNeale Ranns3-26/+44
2020-10-16ipsec: fix instance, and cli del for new ipsec interfaceEric Kinzie2-4/+4
2020-10-08ipsec: Allow SAs with NULL auth &crypto on IPSec interfaceNeale Ranns1-2/+3
2020-10-05ipsec: Use bihash for tunnel lookupNeale Ranns6-123/+269
2020-09-17teib: Use ip_address_t not ip46_address_tNeale Ranns1-23/+5
2020-09-17teib: Add adj-fibs for peers/adjacencies on p2mp interfaceNeale Ranns1-1/+3
2020-09-16api: clean up use of deprecated flagOle Troan1-2/+2
2020-09-07ipsec: fix padding/alignment for native IPsec encryptionChristian Hopps5-19/+19
2020-09-04ipsec: fix trace of GRE_teb packetsChristian Hopps1-2/+5
2020-09-04ipsec: cli: add missing flags for SA addChristian Hopps1-0/+12
2020-09-02ipsec: add ipsec set async mode apiYulong Pei2-1/+26
2020-08-27ipsec: Deprecate old interface APINeale Ranns1-1/+3
2020-08-20ipsec: fix esp paddingMilan Lenco1-1/+1
2020-07-29ipsec: fix cli uninitialized parametersBenoît Ganne1-15/+37
2020-07-21ipsec: Dedicated IPSec interface typeNeale Ranns7-19/+748
2020-05-27ipsec: Add/Del IPSec SA is not MP safeNeale Ranns1-7/+0
2020-05-24ipsec: fixed chaining ops after add footer and icvPiotrX Kleski1-8/+11
2020-05-13ipsec: Support 4o6 and 6o4 for SPD tunnel mode SAsNeale Ranns2-38/+65
2020-05-05ipsec: User can choose the UDP source portNeale Ranns9-24/+110
2020-05-04fib: midchain adjacency optimisationsNeale Ranns4-205/+120
2020-04-30crypto: introduce async crypto infraFan Zhang8-708/+1862
2020-04-28ipsec: fix buffer allocFilip Tehlar1-1/+7
2020-04-24ipsec: add input node bypass/discard functionalityShivaShankarK3-164/+263
2020-04-16ipsec: fix use-after-freeBenoît Ganne1-1/+1
2020-04-14ipsec: validate number of input sasMatthew Smith2-1/+9
2020-04-02ipsec: provide stat index in sa detailsMatthew Smith2-3/+5
2020-03-31ipsec: use id in ipsec_tunnel_protect_detailsMatthew Smith1-4/+6
2020-03-31ipsec: fix chained ESPFilip Tehlar2-50/+145
2020-03-31ipsec: fix udp-encap in transport modeAlexander Chernavin1-1/+7
2020-03-23ipsec: Revert "ipsec: fix chained ESP"Florin Coras2-144/+50
2020-03-23ipsec: fix chained ESPFilip Tehlar2-50/+144
2020-03-23ipsec: increment no-tunnel counter in ipsec-tun-inputAlexander Chernavin1-0/+3
2020-03-21ipsec: efficient layout of ESP per thread dataRajesh Goel1-3/+4
2020-03-21ikev2: add support for custom ipsec-over-udp portFilip Tehlar4-10/+25
2020-03-17ipsec: initialize algs to none in 'create ipsec tunnel' cliDamjan Marion1-2/+2
2020-03-10ipsec: API cleanupJakub Grajciar2-25/+27
2020-03-05api: ipsec: add missing IS_INBOUND flag.Christian Hopps2-0/+6
2020-02-26ipsec: Revert API cleanupOle Trøan2-27/+25
2020-02-26ipsec: API cleanupJakub Grajciar2-25/+27
span>u32 fib_index0, u32 fib_index1, const ip4_address_t * addr0, const ip4_address_t * addr1, index_t *lb0, index_t *lb1) { ip4_mtrie_leaf_t leaf[2]; ip4_mtrie_16_t * mtrie[2]; mtrie[0] = &ip4_fib_get(fib_index0)->mtrie; mtrie[1] = &ip4_fib_get(fib_index1)->mtrie; leaf[0] = ip4_mtrie_16_lookup_step_one (mtrie[0], addr0); leaf[1] = ip4_mtrie_16_lookup_step_one (mtrie[1], addr1); leaf[0] = ip4_mtrie_16_lookup_step (leaf[0], addr0, 2); leaf[1] = ip4_mtrie_16_lookup_step (leaf[1], addr1, 2); leaf[0] = ip4_mtrie_16_lookup_step (leaf[0], addr0, 3); leaf[1] = ip4_mtrie_16_lookup_step (leaf[1], addr1, 3); *lb0 = ip4_mtrie_leaf_get_adj_index(leaf[0]); *lb1 = ip4_mtrie_leaf_get_adj_index(leaf[1]); } static_always_inline void ip4_fib_forwarding_lookup_x4 (u32 fib_index0, u32 fib_index1, u32 fib_index2, u32 fib_index3, const ip4_address_t * addr0, const ip4_address_t * addr1, const ip4_address_t * addr2, const ip4_address_t * addr3, index_t *lb0, index_t *lb1, index_t *lb2, index_t *lb3) { ip4_mtrie_leaf_t leaf[4]; ip4_mtrie_16_t * mtrie[4]; mtrie[0] = &ip4_fib_get(fib_index0)->mtrie; mtrie[1] = &ip4_fib_get(fib_index1)->mtrie; mtrie[2] = &ip4_fib_get(fib_index2)->mtrie; mtrie[3] = &ip4_fib_get(fib_index3)->mtrie; leaf[0] = ip4_mtrie_16_lookup_step_one (mtrie[0], addr0); leaf[1] = ip4_mtrie_16_lookup_step_one (mtrie[1], addr1); leaf[2] = ip4_mtrie_16_lookup_step_one (mtrie[2], addr2); leaf[3] = ip4_mtrie_16_lookup_step_one (mtrie[3], addr3); leaf[0] = ip4_mtrie_16_lookup_step (leaf[0], addr0, 2); leaf[1] = ip4_mtrie_16_lookup_step (leaf[1], addr1, 2); leaf[2] = ip4_mtrie_16_lookup_step (leaf[2], addr2, 2); leaf[3] = ip4_mtrie_16_lookup_step (leaf[3], addr3, 2); leaf[0] = ip4_mtrie_16_lookup_step (leaf[0], addr0, 3); leaf[1] = ip4_mtrie_16_lookup_step (leaf[1], addr1, 3); leaf[2] = ip4_mtrie_16_lookup_step (leaf[2], addr2, 3); leaf[3] = ip4_mtrie_16_lookup_step (leaf[3], addr3, 3); *lb0 = ip4_mtrie_leaf_get_adj_index(leaf[0]); *lb1 = ip4_mtrie_leaf_get_adj_index(leaf[1]); *lb2 = ip4_mtrie_leaf_get_adj_index(leaf[2]); *lb3 = ip4_mtrie_leaf_get_adj_index(leaf[3]); } #else always_inline index_t ip4_fib_forwarding_lookup (u32 fib_index, const ip4_address_t * addr) { ip4_mtrie_leaf_t leaf; ip4_mtrie_8_t * mtrie; mtrie = &ip4_fib_get(fib_index)->mtrie; leaf = ip4_mtrie_8_lookup_step_one (mtrie, addr); leaf = ip4_mtrie_8_lookup_step (leaf, addr, 1); leaf = ip4_mtrie_8_lookup_step (leaf, addr, 2); leaf = ip4_mtrie_8_lookup_step (leaf, addr, 3); return (ip4_mtrie_leaf_get_adj_index(leaf)); } static_always_inline void ip4_fib_forwarding_lookup_x2 (u32 fib_index0, u32 fib_index1, const ip4_address_t * addr0, const ip4_address_t * addr1, index_t *lb0, index_t *lb1) { ip4_mtrie_leaf_t leaf[2]; ip4_mtrie_8_t * mtrie[2]; mtrie[0] = &ip4_fib_get(fib_index0)->mtrie; mtrie[1] = &ip4_fib_get(fib_index1)->mtrie; leaf[0] = ip4_mtrie_8_lookup_step_one (mtrie[0], addr0); leaf[1] = ip4_mtrie_8_lookup_step_one (mtrie[1], addr1); leaf[0] = ip4_mtrie_8_lookup_step (leaf[0], addr0, 1); leaf[1] = ip4_mtrie_8_lookup_step (leaf[1], addr1, 1); leaf[0] = ip4_mtrie_8_lookup_step (leaf[0], addr0, 2); leaf[1] = ip4_mtrie_8_lookup_step (leaf[1], addr1, 2); leaf[0] = ip4_mtrie_8_lookup_step (leaf[0], addr0, 3); leaf[1] = ip4_mtrie_8_lookup_step (leaf[1], addr1, 3); *lb0 = ip4_mtrie_leaf_get_adj_index(leaf[0]); *lb1 = ip4_mtrie_leaf_get_adj_index(leaf[1]); } static_always_inline void ip4_fib_forwarding_lookup_x4 (u32 fib_index0, u32 fib_index1, u32 fib_index2, u32 fib_index3, const ip4_address_t * addr0, const ip4_address_t * addr1, const ip4_address_t * addr2, const ip4_address_t * addr3, index_t *lb0, index_t *lb1, index_t *lb2, index_t *lb3) { ip4_mtrie_leaf_t leaf[4]; ip4_mtrie_8_t * mtrie[4]; mtrie[0] = &ip4_fib_get(fib_index0)->mtrie; mtrie[1] = &ip4_fib_get(fib_index1)->mtrie; mtrie[2] = &ip4_fib_get(fib_index2)->mtrie; mtrie[3] = &ip4_fib_get(fib_index3)->mtrie; leaf[0] = ip4_mtrie_8_lookup_step_one (mtrie[0], addr0); leaf[1] = ip4_mtrie_8_lookup_step_one (mtrie[1], addr1); leaf[2] = ip4_mtrie_8_lookup_step_one (mtrie[2], addr2); leaf[3] = ip4_mtrie_8_lookup_step_one (mtrie[3], addr3); leaf[0] = ip4_mtrie_8_lookup_step (leaf[0], addr0, 1); leaf[1] = ip4_mtrie_8_lookup_step (leaf[1], addr1, 1); leaf[2] = ip4_mtrie_8_lookup_step (leaf[2], addr2, 1); leaf[3] = ip4_mtrie_8_lookup_step (leaf[3], addr3, 1); leaf[0] = ip4_mtrie_8_lookup_step (leaf[0], addr0, 2); leaf[1] = ip4_mtrie_8_lookup_step (leaf[1], addr1, 2); leaf[2] = ip4_mtrie_8_lookup_step (leaf[2], addr2, 2); leaf[3] = ip4_mtrie_8_lookup_step (leaf[3], addr3, 2); leaf[0] = ip4_mtrie_8_lookup_step (leaf[0], addr0, 3); leaf[1] = ip4_mtrie_8_lookup_step (leaf[1], addr1, 3); leaf[2] = ip4_mtrie_8_lookup_step (leaf[2], addr2, 3); leaf[3] = ip4_mtrie_8_lookup_step (leaf[3], addr3, 3); *lb0 = ip4_mtrie_leaf_get_adj_index(leaf[0]); *lb1 = ip4_mtrie_leaf_get_adj_index(leaf[1]); *lb2 = ip4_mtrie_leaf_get_adj_index(leaf[2]); *lb3 = ip4_mtrie_leaf_get_adj_index(leaf[3]); } #endif #endif