int iterLinkTabNext(char *buff, int len) { struct list_node *link_node; struct lqtextbuffer lqbuffer; if (iterLinkTab == NULL) return -1; snprintf(buff, len, "local~%s~remote~%s~main~%s~hysteresis~%f~cost~%s~", rawIpAddrToString(&iterLinkTab->local_iface_addr, ipAddrLen), rawIpAddrToString(&iterLinkTab->neighbor_iface_addr, ipAddrLen), rawIpAddrToString(&iterLinkTab->neighbor->neighbor_main_addr, ipAddrLen), iterLinkTab->L_link_quality, get_linkcost_text(iterLinkTab->linkcost, OLSR_FALSE, &lqbuffer)); link_node = iterLinkTab->link_list.next; if (link_node != &link_entry_head) { iterLinkTab = list2link(link_node); } else { iterLinkTab = NULL; } return 0; }
void iterLinkTabInit(void) { struct list_node *link_node; link_node = link_entry_head.next; if (link_node != &link_entry_head) { iterLinkTab = list2link(link_node); } else { iterLinkTab = NULL; } }
/*-----------------------------------------------------------------------*/ static t_LL GetList(void) { t_LL list = ConsLL(); t_LLsize size = Gett_LLsize(); while(size-- > 0) { t_ELMsize elemSize = Gett_ELMsize(); if (0 == elemSize ) { /* this element is a list, get it by a recursive call */ t_LL listElem = GetList(); InsLastLL(list,listElem); } else { void * elemData = InsEmptyBefLLf(list2link(list),elemSize); if (1!=fread(elemData,elemSize,1,fileR)) AbortLL_M("GetList","fread failed"); } } return list; }