/* Inteface addition message from zebra. */ static int ospf6_zebra_if_add (int command, struct zclient *zclient, zebra_size_t length) { struct interface *ifp; ifp = zebra_interface_add_read (zclient->ibuf); if (IS_OSPF6_DEBUG_ZEBRA (RECV)) zlog_debug ("Zebra Interface add: %s index %d mtu %d", ifp->name, ifp->ifindex, ifp->mtu6); ospf6_interface_if_add (ifp); return 0; }
/* Inteface addition message from zebra. */ int ospf6_zebra_if_add (int command, struct zclient *zclient, zebra_size_t length) { struct interface *ifp; ifp = zebra_interface_add_read (zclient->ibuf); /* log */ if (IS_OSPF6_DUMP_ZEBRA) zlog_info ("ZEBRA: I/F add: %s index %d mtu %d", ifp->name, ifp->ifindex, ifp->mtu); ospf6_interface_if_add (ifp); return 0; }
int recv_features_reply(struct ctrl_client * ctrl_client, struct rfpbuf * buffer) { struct rfp_router_features * rrf = buffer->data; struct interface * ifp; int i; unsigned int ifindex; unsigned int mtu; int offset = offsetof(struct rfp_router_features, ports); size_t n_ports = ((ntohs(rrf->header.length) - offset) / sizeof(*rrf->ports)); if(IS_OSPF6_SIBLING_DEBUG_MSG) { zlog_notice("number of ports: %d", n_ports); } for(i = 0; i < n_ports; i++) { const struct rfp_phy_port * rpp = &rrf->ports[i]; ifindex = ntohs(rpp->port_no); mtu = ntohl(rpp->mtu); if(IS_OSPF6_SIBLING_DEBUG_MSG) { zlog_notice("port #: %d, name: %s, mtu: %d", ifindex, rpp->name, mtu); } /* create new interface if not created */ ifp = if_get_by_name(ctrl_client->if_list, rpp->name); // fill up the interface info ifp->ifindex = ifindex; // fill up the mtu ifp->mtu = mtu; // copy over the flags ifp->state = ntohl(rpp->state); ospf6_interface_if_add(ifp, ctrl_client); } return 0; }