aboutsummaryrefslogtreecommitdiffstats
path: root/fdio.infra.ansible/inventories
AgeCommit message (Expand)AuthorFilesLines
2021-09-30feat(Infra): Upgrade Intel NIC's firmware on SUTspmikus18-3/+38
2021-09-27feat(Infra): Upgrade Intel NIC's firmware on TGspmikus11-0/+25
2021-09-24Ansible: Intel driver compatibility matrixpmikus4-0/+8
2021-09-24feat(Ansible): 2M and 1G hugepagespmikus30-14/+44
2021-08-27Infra: Cleanup Nomad configspmikus21-21/+21
2021-08-25lab: update Arm lab docsJuraj Linkeš1-4/+4
2021-08-19Infra: ansible update arm perf testbedsJuraj Linkeš3-15/+15
2021-08-18Infra: Ansible yaml lint cleanuppmikus53-112/+112
2021-08-06Ansible: remove 10.30.51.30 from server poolpmikus1-13/+7
2021-08-04Infra: Update monitoring for new layoutpmikus17-60/+180
2021-08-04Infra: Decommission 3n-hsw - pxe/ansiblepmikus20-549/+306
2021-07-22Infra: Add mnaser ssh-keypmikus22-1/+22
2021-07-08Infra: AWS Jenkins Integrationpmikus22-0/+22
2021-06-10Infra: vpp_device -> Ubuntu 20.04pmikus5-64/+42
2021-05-25Infra: Add fdio-marvel-devpmikus1-9/+2
2021-05-11Infra: Backend infra upgradepmikus21-270/+146
2021-04-21Infra: Vagrant upgrade to focalpmikus2-0/+9
2021-04-08Ansible git movepmikus66-0/+2673
pan class="cm">/* local ip6 VTEPs keyed on their ip6 addr + fib_index */ } vtep_table_t; always_inline vtep_table_t vtep_table_create () { vtep_table_t t = { }; t.vtep6 = hash_create_mem (0, sizeof (vtep6_key_t), sizeof (uword)); return t; } uword vtep_addr_ref (vtep_table_t * t, u32 fib_index, ip46_address_t * ip); uword vtep_addr_unref (vtep_table_t * t, u32 fib_index, ip46_address_t * ip); always_inline void vtep4_key_init (vtep4_key_t * k4) { k4->as_u64 = ~((u64) 0); } always_inline void vtep6_key_init (vtep6_key_t * k6) { ip6_address_set_zero (&k6->addr); k6->fib_index = (u32) ~ 0; } enum { VTEP_CHECK_FAIL = 0, VTEP_CHECK_PASS = 1, VTEP_CHECK_PASS_UNCHANGED = 2 }; always_inline u8 vtep4_check (vtep_table_t * t, vlib_buffer_t * b0, ip4_header_t * ip40, vtep4_key_t * last_k4) { vtep4_key_t k4; k4.addr.as_u32 = ip40->dst_address.as_u32; k4.fib_index = vlib_buffer_get_ip4_fib_index (b0); if (PREDICT_TRUE (k4.as_u64 == last_k4->as_u64)) return VTEP_CHECK_PASS_UNCHANGED; if (PREDICT_FALSE (!hash_get (t->vtep4, k4.as_u64))) return VTEP_CHECK_FAIL; last_k4->as_u64 = k4.as_u64; return VTEP_CHECK_PASS; } typedef struct { vtep4_key_t vtep4_cache[8]; int idx; } vtep4_cache_t; always_inline u8 vtep4_check_vector (vtep_table_t * t, vlib_buffer_t * b0, ip4_header_t * ip40, vtep4_key_t * last_k4, vtep4_cache_t * vtep4_u512) { vtep4_key_t k4; k4.addr.as_u32 = ip40->dst_address.as_u32; k4.fib_index = vlib_buffer_get_ip4_fib_index (b0); if (PREDICT_TRUE (k4.as_u64 == last_k4->as_u64)) return VTEP_CHECK_PASS_UNCHANGED; #ifdef CLIB_HAVE_VEC512 u64x8 k4_u64x8 = u64x8_splat (k4.as_u64); u64x8 cache = u64x8_load_aligned (vtep4_u512->vtep4_cache); u8 result = u64x8_mask_is_equal (cache, k4_u64x8); if (PREDICT_TRUE (result != 0)) { k4.as_u64 = vtep4_u512->vtep4_cache[count_trailing_zeros (result)].as_u64; return VTEP_CHECK_PASS_UNCHANGED; } #endif if (PREDICT_FALSE (!hash_get (t->vtep4, k4.as_u64))) return VTEP_CHECK_FAIL; last_k4->as_u64 = k4.as_u64; #ifdef CLIB_HAVE_VEC512 vtep4_u512->vtep4_cache[vtep4_u512->idx].as_u64 = k4.as_u64; vtep4_u512->idx = (vtep4_u512->idx + 1) & 0x7; #endif return VTEP_CHECK_PASS; } always_inline u8 vtep6_check (vtep_table_t * t, vlib_buffer_t * b0, ip6_header_t * ip60, vtep6_key_t * last_k6) { vtep6_key_t k6; k6.fib_index = vlib_buffer_get_ip6_fib_index (b0); if (PREDICT_TRUE (k6.fib_index == last_k6->fib_index && ip60->dst_address.as_u64[0] == last_k6->addr.as_u64[0] && ip60->dst_address.as_u64[1] == last_k6->addr.as_u64[1])) { return VTEP_CHECK_PASS_UNCHANGED; } k6.addr = ip60->dst_address; if (PREDICT_FALSE (!hash_get_mem (t->vtep6, &k6))) return VTEP_CHECK_FAIL; *last_k6 = k6; return VTEP_CHECK_PASS; } #endif /* included_ip_vtep_h */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */