static int is_spine(ibnd_node_t * n) { return (is_spine_9096(n) || is_spine_9288(n) || is_spine_2004(n) || is_spine_2012(n) || is_spine_4700(n) || is_spine_4700x2(n) || is_spine_4200(n)); }
static void get_sfb_slot(Node *node, Port *lineport) { ChassisRecord *ch = node->chrecord; ch->chassisslot = SPINE_CS; if (is_spine_9096(node)) { ch->chassistype = ISR9096_CT; ch->slotnum = spine4_slot_2_slb[lineport->portnum]; ch->anafanum = anafa_spine4_slot_2_slb[lineport->portnum]; } else if (is_spine_9288(node)) { ch->chassistype = ISR9288_CT; ch->slotnum = spine12_slot_2_slb[lineport->portnum]; ch->anafanum = anafa_spine12_slot_2_slb[lineport->portnum]; } else if (is_spine_2012(node)) { ch->chassistype = ISR2012_CT; ch->slotnum = spine12_slot_2_slb[lineport->portnum]; ch->anafanum = anafa_spine12_slot_2_slb[lineport->portnum]; } else if (is_spine_2004(node)) { ch->chassistype = ISR2004_CT; ch->slotnum = spine4_slot_2_slb[lineport->portnum]; ch->anafanum = anafa_spine4_slot_2_slb[lineport->portnum]; } else { IBPANIC("Unexpected node found: guid 0x%016" PRIx64, node->nodeguid); } }
static int get_spine_index(Node *node) { int retval; if (is_spine_9288(node) || is_spine_2012(node)) retval = 3 * (node->chrecord->slotnum - 1) + node->chrecord->anafanum; else retval = node->chrecord->slotnum; if (retval > SPINES_MAX_NUM || retval < 1) IBPANIC("Internal error"); return retval; }
static int get_spine_index(ibnd_node_t * node) { int retval; if (is_spine_9288(node) || is_spine_2012(node)) retval = 3 * (node->ch_slotnum - 1) + node->ch_anafanum; else if (is_spine_4700(node) || is_spine_4700x2(node)) retval = 2 * (node->ch_slotnum - 1) + node->ch_anafanum; else retval = node->ch_slotnum; if (retval > SPINES_MAX_NUM || retval < 1) { IBND_ERROR("Internal error\n"); return -1; } return retval; }
static void get_router_slot(Node *node, Port *spineport) { ChassisRecord *ch = node->chrecord; int guessnum = 0; if (!ch) { if (!(node->chrecord = calloc(1, sizeof(ChassisRecord)))) IBPANIC("out of mem"); ch = node->chrecord; } ch->chassisslot = SRBD_CS; if (is_spine_9096(spineport->node)) { ch->chassistype = ISR9096_CT; ch->slotnum = line_slot_2_sfb4[spineport->portnum]; ch->anafanum = ipr_slot_2_sfb4_port[spineport->portnum]; } else if (is_spine_9288(spineport->node)) { ch->chassistype = ISR9288_CT; ch->slotnum = line_slot_2_sfb12[spineport->portnum]; /* this is a smart guess based on nodeguids order on sFB-12 module */ guessnum = spineport->node->nodeguid % 4; /* module 1 <--> remote anafa 3 */ /* module 2 <--> remote anafa 2 */ /* module 3 <--> remote anafa 1 */ ch->anafanum = (guessnum == 3 ? 1 : (guessnum == 1 ? 3 : 2)); } else if (is_spine_2012(spineport->node)) { ch->chassistype = ISR2012_CT; ch->slotnum = line_slot_2_sfb12[spineport->portnum]; /* this is a smart guess based on nodeguids order on sFB-12 module */ guessnum = spineport->node->nodeguid % 4; // module 1 <--> remote anafa 3 // module 2 <--> remote anafa 2 // module 3 <--> remote anafa 1 ch->anafanum = (guessnum == 3? 1 : (guessnum == 1 ? 3 : 2)); } else if (is_spine_2004(spineport->node)) { ch->chassistype = ISR2004_CT; ch->slotnum = line_slot_2_sfb4[spineport->portnum]; ch->anafanum = ipr_slot_2_sfb4_port[spineport->portnum]; } else { IBPANIC("Unexpected node found: guid 0x%016" PRIx64, spineport->node->nodeguid); } }
static int get_router_slot(ibnd_node_t * n, ibnd_port_t * spineport) { uint64_t guessnum = 0; n->ch_found = 1; n->ch_slot = SRBD_CS; if (is_spine_9096(spineport->node)) { n->ch_type = ISR9096_CT; n->ch_slotnum = line_slot_2_sfb4[spineport->portnum]; n->ch_anafanum = ipr_slot_2_sfb4_port[spineport->portnum]; } else if (is_spine_9288(spineport->node)) { n->ch_type = ISR9288_CT; n->ch_slotnum = line_slot_2_sfb12[spineport->portnum]; /* this is a smart guess based on nodeguids order on sFB-12 module */ guessnum = spineport->node->guid % 4; /* module 1 <--> remote anafa 3 */ /* module 2 <--> remote anafa 2 */ /* module 3 <--> remote anafa 1 */ n->ch_anafanum = (guessnum == 3 ? 1 : (guessnum == 1 ? 3 : 2)); } else if (is_spine_2012(spineport->node)) { n->ch_type = ISR2012_CT; n->ch_slotnum = line_slot_2_sfb12[spineport->portnum]; /* this is a smart guess based on nodeguids order on sFB-12 module */ guessnum = spineport->node->guid % 4; // module 1 <--> remote anafa 3 // module 2 <--> remote anafa 2 // module 3 <--> remote anafa 1 n->ch_anafanum = (guessnum == 3 ? 1 : (guessnum == 1 ? 3 : 2)); } else if (is_spine_2004(spineport->node)) { n->ch_type = ISR2004_CT; n->ch_slotnum = line_slot_2_sfb4[spineport->portnum]; n->ch_anafanum = ipr_slot_2_sfb4_port[spineport->portnum]; } else { IBND_ERROR("Unexpected node found: guid 0x%016" PRIx64 "\n", spineport->node->guid); } return 0; }
static void get_slb_slot(ChassisRecord *ch, Port *spineport) { ch->chassisslot = LINE_CS; if (is_spine_9096(spineport->node)) { ch->chassistype = ISR9096_CT; ch->slotnum = line_slot_2_sfb4[spineport->portnum]; ch->anafanum = anafa_line_slot_2_sfb4[spineport->portnum]; } else if (is_spine_9288(spineport->node)) { ch->chassistype = ISR9288_CT; ch->slotnum = line_slot_2_sfb12[spineport->portnum]; ch->anafanum = anafa_line_slot_2_sfb12[spineport->portnum]; } else if (is_spine_2012(spineport->node)) { ch->chassistype = ISR2012_CT; ch->slotnum = line_slot_2_sfb12[spineport->portnum]; ch->anafanum = anafa_line_slot_2_sfb12[spineport->portnum]; } else if (is_spine_2004(spineport->node)) { ch->chassistype = ISR2004_CT; ch->slotnum = line_slot_2_sfb4[spineport->portnum]; ch->anafanum = anafa_line_slot_2_sfb4[spineport->portnum]; } else { IBPANIC("Unexpected node found: guid 0x%016" PRIx64, spineport->node->nodeguid); } }
static int get_slb_slot(ibnd_node_t * n, ibnd_port_t * spineport) { n->ch_slot = LINE_CS; if (is_spine_9096(spineport->node)) { n->ch_type = ISR9096_CT; n->ch_slotnum = line_slot_2_sfb4[spineport->portnum]; n->ch_anafanum = anafa_line_slot_2_sfb4[spineport->portnum]; } else if (is_spine_9288(spineport->node)) { n->ch_type = ISR9288_CT; n->ch_slotnum = line_slot_2_sfb12[spineport->portnum]; n->ch_anafanum = anafa_line_slot_2_sfb12[spineport->portnum]; } else if (is_spine_2012(spineport->node)) { n->ch_type = ISR2012_CT; n->ch_slotnum = line_slot_2_sfb12[spineport->portnum]; n->ch_anafanum = anafa_line_slot_2_sfb12[spineport->portnum]; } else if (is_spine_2004(spineport->node)) { n->ch_type = ISR2004_CT; n->ch_slotnum = line_slot_2_sfb4[spineport->portnum]; n->ch_anafanum = anafa_line_slot_2_sfb4[spineport->portnum]; } else if (is_spine_4700(spineport->node)) { n->ch_type = ISR4700_CT; n->ch_slotnum = line_slot_2_sfb18[spineport->portnum]; n->ch_anafanum = anafa_line_slot_2_sfb18[spineport->portnum]; } else if (is_spine_4700x2(spineport->node)) { n->ch_type = ISR4700_CT; n->ch_slotnum = line_slot_2_sfb18x2[spineport->portnum]; n->ch_anafanum = anafa_line_slot_2_sfb18x2[spineport->portnum]; } else if (is_spine_4200(spineport->node)) { n->ch_type = ISR4200_CT; n->ch_slotnum = line_slot_2_sfb4200[spineport->portnum]; n->ch_anafanum = anafa_line_slot_2_sfb4200[spineport->portnum]; } else { IBND_ERROR("Unexpected node found: guid 0x%016" PRIx64 "\n", spineport->node->guid); } return 0; }
static int get_sfb_slot(ibnd_node_t * n, ibnd_port_t * lineport) { n->ch_slot = SPINE_CS; if (is_spine_9096(n)) { n->ch_type = ISR9096_CT; n->ch_slotnum = spine4_slot_2_slb[lineport->portnum]; n->ch_anafanum = anafa_spine4_slot_2_slb[lineport->portnum]; } else if (is_spine_9288(n)) { n->ch_type = ISR9288_CT; n->ch_slotnum = spine12_slot_2_slb[lineport->portnum]; n->ch_anafanum = anafa_spine12_slot_2_slb[lineport->portnum]; } else if (is_spine_2012(n)) { n->ch_type = ISR2012_CT; n->ch_slotnum = spine12_slot_2_slb[lineport->portnum]; n->ch_anafanum = anafa_spine12_slot_2_slb[lineport->portnum]; } else if (is_spine_2004(n)) { n->ch_type = ISR2004_CT; n->ch_slotnum = spine4_slot_2_slb[lineport->portnum]; n->ch_anafanum = anafa_spine4_slot_2_slb[lineport->portnum]; } else if (is_spine_4700(n)) { n->ch_type = ISR4700_CT; n->ch_slotnum = spine18_slot_2_slb[lineport->portnum]; n->ch_anafanum = anafa_spine18_slot_2_slb[lineport->portnum]; } else if (is_spine_4700x2(n)) { n->ch_type = ISR4700_CT; n->ch_slotnum = spine18_slot_2_slb[lineport->portnum]; n->ch_anafanum = anafa_spine18x2_slot_2_slb[lineport->portnum]; } else if (is_spine_4200(n)) { n->ch_type = ISR4200_CT; n->ch_slotnum = sfb4200_slot_2_slb[lineport->portnum]; n->ch_anafanum = anafa_sfb4200_slot_2_slb[lineport->portnum]; } else { IBND_ERROR("Unexpected node found: guid 0x%016" PRIx64 "\n", n->guid); } return 0; }
static int is_spine(Node *node) { return (is_spine_9096(node) || is_spine_9288(node) || is_spine_2004(node) || is_spine_2012(node)); }