Major points
AIB is the most stable component (Atul)
1) AIB external managed adjacency
2) Software Path bundle load balance
3) Packet capture
4) Preroute Mcast
5) Preroute Unicast
BM-ADJ control path
Producer (create/delete/modify) -> AIB -> PD BM ADJ -> HW
IM/IIR -> PI BM ADJ -> PD BM ADJ -> PI AIB -> PD BM ADJ -> HW
Unicast preroute path
RP CPU -> LC CPU (prior 4.1.0 of ISSU changes)
RP CPU -> LC PSE (from 4.1.0) set next hop bit and next hop address, next hop address must be connected address.
RSVP / Linklocal / OSPF-EIGRP etc. session init packets
AIB external registration
=================
#define BMP_ADJ_CMPL_DLL_NAME "libbundlemgr_platform_hfr_cmpl_cti.dll"
dll_parms.aibcl_compl_fn_dll_name = BMP_ADJ_CMPL_DLL_NAME;
#define BMP_ADJ_CMPL_FUNC_NAME "bmp_adj_cmpl_adj"
dll_parms.aibcl_compl_fn_name = BMP_ADJ_CMPL_FUNC_NAME;
#define BMP_ADJ_DLL_NAME "libbundlemgr_adj_pd.dll";
dll_parms.aibcl_plat_dll_name = BMP_ADJ_DLL_NAME;
#define BMP_ADJ_PROG_FUNC_NAME "bmp_prog_adj";
dll_parms.aibcl_plat_prog_fn_name = BMP_ADJ_PROG_FUNC_NAME;
#define BMP_ADJ_STATS_FUNC_NAME "bmp_read_stats"
dll_parms.aibcl_plat_read_stats_fn_name = BMP_ADJ_STATS_FUNC_NAME;
Bundle Load Balance in SW path
=======================
aib_complete_entry
calls dlldata->complete_fn() function (bmp_adj_cmpl_adj())
Packet Capture Function
=======================
packet drop capture
drop in PSE -> shq/spr -> squidlib->fabio->qad->forwarder driver (drop packets capture here)
packet punt capture on interface
1) enable software packet capture on an interface (phy only)
l2_adj_rewrite
queue_fifo
pak_capture
txm_nopull
ipv4
hdlc
l2_adj_rewrite
queue_fifo
link_jump
txm_nopull
2) drop packet capture
fwd_spr_pak_rx()
if (pak_capture_capture_packet(pak, PC_DIRECTION_INGRESS) ==
PCR_DROP_PACKET)
fwd_shq_pak_rx()
if (pak_capture_capture_packet(pak, PC_DIRECTION_EGRESS) ==
PCR_DROP_PACKET) {