summaryrefslogtreecommitdiffstats
path: root/MAINTAINERS
AgeCommit message (Expand)AuthorFilesLines
2021-02-17misc: fix the linux-cp entry for NealeAndrew Yourtchenko1-1/+1
2021-02-17vat2: add sanity checking - coverity errorsOle Troan1-0/+5
2021-02-16cjson: upgrade to new versionOle Troan1-0/+5
2021-02-15svm: fix mq coverity warningFlorin Coras1-1/+1
2021-02-10misc: updating maintainers fileOle Troan1-1/+10
2021-02-04linux-cp: Linux Interface Mirroring for Control Plane IntegrationNeale Ranns1-0/+6
2021-02-01misc: remove duplicated gbp entry in maintainersVratko Polak1-5/+0
2021-02-01misc: mark vnet and plugin in maintainersVratko Polak1-8/+8
2021-02-01misc: use tab as separator in maintainers fileVratko Polak1-6/+6
2021-02-01misc: Volunteer as maintainer for the policerNeale Ranns1-1/+1
2021-02-01misc: Remove duplicate "classify" entry in MAINTAINER listNeale Ranns1-5/+0
2021-02-01misc: Update my email address in MAINTAINERSNeale Ranns1-26/+26
2021-01-08vhost: Add event index for interrupt notification to driverSteven Luong1-0/+6
2020-12-18perfmon: new perfmon pluginDamjan Marion1-0/+5
2020-12-18misc: deprecate old perfmonDamjan Marion1-5/+0
2020-12-16misc: update MAINTAINERS fileDave Barach1-31/+32
2020-12-15api: crchcecker ignore version < 1.0.0 and outside of src directoryOle Tr�an1-1/+0
2020-12-15build: add Steven as maintainer for l2 and vxlanAndrew Yourtchenko1-0/+2
2020-12-15api: crchcecker ignore version < 1.0.0 and outside of src directoryOle Troan1-0/+1
2020-11-19papi: add paul back as maintainerOle Troan1-0/+1
2020-10-16misc: deprecate VOMDamjan Marion1-6/+0
2020-09-21geneve: Move to pluginNeale Ranns1-0/+5
2020-09-18vpp: make main heap page size configurable from startup.confDamjan Marion1-0/+6
2020-09-11misc: edit the MAINTAINERS entries for crypto plugins for common styleAndrew Yourtchenko1-3/+3
2020-09-09wireguard: initial implementation of wireguard protocolArtem Glazychev1-0/+5
2020-08-31af_xdp: AF_XDP input pluginBenoît Ganne1-0/+6
2020-08-31cnat: Destination based NATNeale Ranns1-0/+6
2020-07-16adl: move allow/deny list function to pluginDave Barach1-5/+5
2020-06-27ikev2: add FEATURE.yamlBenoît Ganne1-0/+2
2020-05-26pci: improve vfio loggingDamjan Marion1-0/+10
2020-04-28gomemif: introduce gomemifJakub Grajciar1-0/+5
2020-04-22gso: add vxlan tunnel supportMohsin Kazmi1-1/+1
2020-04-14urpf: Unicast reverse Path Forwarding (plugin)Neale Ranns1-0/+5
2020-03-12policer: API cleanupJakub Grajciar1-0/+5
2020-02-26span: API cleanupJakub Grajciar1-0/+5
2020-02-18misc: deprecating the pluginFlorin Coras1-4/+0
2020-02-13vrrp: add plugin providing vrrp supportMatthew Smith1-0/+5
2020-02-04teib: Rename NHRP to TEIBNeale Ranns1-3/+3
2020-01-30misc: deprecate netmap and ixge driversDamjan Marion1-6/+0
2020-01-28crypto-native: rename crypto_ia32 to crypto_nativeDamjan Marion1-3/+3
2020-01-27tunnel: Common types for IP tunnelsNeale Ranns1-0/+5
2020-01-15quic: add FEATURE.yamlAloys Augustin1-0/+1
2020-01-03tls: add features.yamlFlorin Coras1-0/+1
2020-01-03tcp: add FEATURE.yamlFlorin Coras1-0/+1
2020-01-03udp: add features.yamlFlorin Coras1-0/+1
2020-01-03session: add feature.yamlFlorin Coras1-0/+1
2020-01-03vcl: add feature.yamlFlorin Coras1-0/+1
2020-01-03lisp: add feature.yamlFlorin Coras1-0/+2
2019-12-24unittest: test_bihash call clib_time_init(...)Dave Barach1-0/+6
2019-12-17perfmon: fix per-worker data initializationBenoît Ganne1-0/+5
p">) { if (vft->fesv_activate(best_src, fib_entry)) { /* * next best source activated ok, use its path list */ src->fes_pl = best_src->fes_pl; } } else { /* * next best source does not require activation, use its path list */ src->fes_pl = best_src->fes_pl; } } else { /* * find the covering prefix. become a dependent thereof. * for IP there should always be a cover, though it may be the default route. * For MPLS there is never a cover. */ if (FIB_PROTOCOL_MPLS == fib_entry->fe_prefix.fp_proto) { src->fes_pl = fib_path_list_create_special(DPO_PROTO_MPLS, FIB_PATH_LIST_FLAG_DROP, NULL); } else { src->u.interpose.fesi_cover = fib_table_get_less_specific(fib_entry->fe_fib_index, &fib_entry->fe_prefix); ASSERT(FIB_NODE_INDEX_INVALID != src->u.interpose.fesi_cover); cover = fib_entry_get(src->u.interpose.fesi_cover); src->u.interpose.fesi_sibling = fib_entry_cover_track(cover, fib_entry_get_index(fib_entry)); /* * if the cover is attached then install an attached-host path * (like an adj-fib). Otherwise inherit the forwarding from the cover */ if (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_i(cover)) { fib_entry_src_rr_resolve_via_connected(src, fib_entry, cover); } else { fib_entry_src_rr_use_covers_pl(src, fib_entry, cover); } } } fib_path_list_unlock(old_pl); fib_path_list_lock(src->fes_pl); /* * return go for install */ return (!0); } /** * Source Deactivate. * Called when the source is no longer best source on the entry */ static void fib_entry_src_interpose_deactivate (fib_entry_src_t *src, const fib_entry_t *fib_entry) { fib_entry_t *cover; if (FIB_NODE_INDEX_INVALID != src->u.interpose.fesi_cover) { /* * remove the depednecy on the covering entry, if that's * what was contributing the path-list */ cover = fib_entry_get(src->u.interpose.fesi_cover); fib_entry_cover_untrack(cover, src->u.interpose.fesi_sibling); src->u.interpose.fesi_cover = FIB_NODE_INDEX_INVALID; } else { fib_entry_src_t *best_src; best_src = fib_entry_src_rr_get_next_best(src, fib_entry); if (best_src) { best_src->fes_flags &= ~FIB_ENTRY_SRC_FLAG_CONTRIBUTING; /* * there is another source for this entry. activate it so it * can provide forwarding */ FIB_ENTRY_SRC_VFT_INVOKE(best_src, fesv_deactivate, (best_src, fib_entry)); } } fib_path_list_unlock(src->fes_pl); src->fes_pl = FIB_NODE_INDEX_INVALID; src->fes_entry_flags &= ~FIB_ENTRY_FLAGS_RR_INHERITED; } static int fib_entry_src_interpose_reactivate (fib_entry_src_t *src, const fib_entry_t *fib_entry) { fib_entry_src_interpose_deactivate(src, fib_entry); return (fib_entry_src_interpose_activate(src, fib_entry)); } static fib_entry_src_cover_res_t fib_entry_src_interpose_cover_change (fib_entry_src_t *src, const fib_entry_t *fib_entry) { fib_entry_src_cover_res_t res = { .install = !0, .bw_reason = FIB_NODE_BW_REASON_FLAG_NONE, }; if (FIB_NODE_INDEX_INVALID == src->u.interpose.fesi_cover) { /* * the source may be added, but it is not active * if it is not tracking the cover. */ return (res); } /* * this function is called when this entry's cover has a more specific * entry inserted benaeth it. That does not necessarily mean that this * entry is covered by the new prefix. check that */ if (src->u.interpose.fesi_cover != fib_table_get_less_specific(fib_entry->fe_fib_index, &fib_entry->fe_prefix)) { fib_entry_src_interpose_deactivate(src, fib_entry); fib_entry_src_interpose_activate(src, fib_entry); /* * dependent children need to re-resolve to the new forwarding info */ res.bw_reason = FIB_NODE_BW_REASON_FLAG_EVALUATE; } return (res); } static void fib_entry_src_interpose_add (fib_entry_src_t *src, const fib_entry_t *entry, fib_entry_flag_t flags, dpo_proto_t proto, const dpo_id_t *dpo) { dpo_copy(&src->u.interpose.fesi_dpo, dpo); } static void fib_entry_src_interpose_remove (fib_entry_src_t *src) { dpo_reset(&src->u.interpose.fesi_dpo); } static void fib_entry_src_interpose_set_data (fib_entry_src_t *src, const fib_entry_t *fib_entry, const void *data) { const dpo_id_t *dpo = data; dpo_copy(&src->u.interpose.fesi_dpo, dpo); } /** * Contribute forwarding to interpose in the chain */ const dpo_id_t* fib_entry_src_interpose_contribute(const fib_entry_src_t *src, const fib_entry_t *fib_entry) { return (&src->u.interpose.fesi_dpo); } static void fib_entry_src_interpose_copy (const fib_entry_src_t *orig_src, const fib_entry_t *fib_entry, fib_entry_src_t *copy_src) { copy_src->u.interpose.fesi_cover = orig_src->u.interpose.fesi_cover; if (FIB_NODE_INDEX_INVALID != copy_src->u.interpose.fesi_cover) { fib_entry_t *cover; cover = fib_entry_get(orig_src->u.interpose.fesi_cover); copy_src->u.interpose.fesi_sibling = fib_entry_cover_track(cover, fib_entry_get_index(fib_entry)); } dpo_copy(&copy_src->u.interpose.fesi_dpo, &orig_src->u.interpose.fesi_dpo); } static void fib_entry_src_interpose_flag_change (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_entry_flag_t new_flags) { if (!(new_flags & FIB_ENTRY_FLAG_INTERPOSE)) { /* * stop tracking the source contributing forwarding * and reset the interposer DPO */ fib_entry_src_interpose_deactivate(src, fib_entry); fib_entry_src_interpose_deinit(src); } } static u8* fib_entry_src_interpose_format (fib_entry_src_t *src, u8* s) { s = format(s, " cover:%d interpose:\n%U%U", src->u.interpose.fesi_cover, format_white_space, 6, format_dpo_id, &src->u.interpose.fesi_dpo, 8); return (s); } const static fib_entry_src_vft_t interpose_src_vft = { .fesv_init = fib_entry_src_interpose_init, .fesv_deinit = fib_entry_src_interpose_deinit, .fesv_activate = fib_entry_src_interpose_activate, .fesv_reactivate = fib_entry_src_interpose_reactivate, .fesv_deactivate = fib_entry_src_interpose_deactivate, .fesv_cover_change = fib_entry_src_interpose_cover_change, .fesv_cover_update = fib_entry_src_rr_cover_update, .fesv_format = fib_entry_src_interpose_format, .fesv_add = fib_entry_src_interpose_add, .fesv_remove = fib_entry_src_interpose_remove, .fesv_contribute_interpose = fib_entry_src_interpose_contribute, .fesv_set_data = fib_entry_src_interpose_set_data, .fesv_copy = fib_entry_src_interpose_copy, .fesv_flags_change = fib_entry_src_interpose_flag_change, }; void fib_entry_src_interpose_register (void) { fib_entry_src_register(FIB_SOURCE_INTERPOSE, &interpose_src_vft); }