这篇教程C++ uip_ds6_list_loop函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中uip_ds6_list_loop函数的典型用法代码示例。如果您正苦于以下问题:C++ uip_ds6_list_loop函数的具体用法?C++ uip_ds6_list_loop怎么用?C++ uip_ds6_list_loop使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了uip_ds6_list_loop函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: uip_ds6_route_add/*---------------------------------------------------------------------------*/uip_ds6_route_t *uip_ds6_route_add(uip_ipaddr_t * ipaddr, u8_t length, uip_ipaddr_t * nexthop, u8_t metric){ if(uip_ds6_list_loop ((uip_ds6_element_t *) uip_ds6_routing_table, UIP_DS6_ROUTE_NB, sizeof(uip_ds6_route_t), ipaddr, length, (uip_ds6_element_t **) & locroute) == FREESPACE) { locroute->isused = 1; uip_ipaddr_copy(&(locroute->ipaddr), ipaddr); locroute->length = length; uip_ipaddr_copy(&(locroute->nexthop), nexthop); locroute->metric = metric; PRINTF("DS6: adding route:"); PRINT6ADDR(ipaddr); PRINTF(" via "); PRINT6ADDR(nexthop); PRINTF("/n"); } return locroute;}
开发者ID:EmuxEvans,项目名称:deContiki,代码行数:26,
示例2: uip_ds6_defrt_add/*---------------------------------------------------------------------------*/uip_ds6_defrt_t *uip_ds6_defrt_add(uip_ipaddr_t *ipaddr, unsigned long interval){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_defrt_list, UIP_DS6_DEFRT_NB, sizeof(uip_ds6_defrt_t), ipaddr, 128, (uip_ds6_element_t **)&locdefrt) == FREESPACE) { locdefrt->isused = 1; uip_ipaddr_copy(&locdefrt->ipaddr, ipaddr); if(interval != 0) { stimer_set(&locdefrt->lifetime, interval); locdefrt->isinfinite = 0; } else { locdefrt->isinfinite = 1; } PRINTF("Adding defrouter with ip addr "); PRINT6ADDR(&locdefrt->ipaddr); PRINTF("/n"); ANNOTATE("#L %u 1/n", ipaddr->u8[sizeof(uip_ipaddr_t) - 1]); return locdefrt; } return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:27,
示例3: uip_ds6_addr_add/*---------------------------------------------------------------------------*/uip_ds6_addr_t *uip_ds6_addr_add(uip_ipaddr_t * ipaddr, unsigned long vlifetime, u8_t type){ if(uip_ds6_list_loop ((uip_ds6_element_t *) uip_ds6_if.addr_list, UIP_DS6_ADDR_NB, sizeof(uip_ds6_addr_t), ipaddr, 128, (uip_ds6_element_t **) & locaddr) == FREESPACE) { locaddr->isused = 1; uip_ipaddr_copy(&locaddr->ipaddr, ipaddr); if (uip_is_addr_link_local(ipaddr)) { locaddr->state = ADDR_PREFERRED; } else { locaddr->state = ADDR_TENTATIVE; } locaddr->type = type; if(vlifetime == 0) { locaddr->isinfinite = 1; } else { locaddr->isinfinite = 0; stimer_set(&locaddr->vlifetime, vlifetime); }#if UIP_CONF_ROUTER /* * If 6LoWPAN-ND optimizations are implemented, hosts do not join the * Solicited-node multicast address. */ uip_create_solicited_node(ipaddr, &loc_fipaddr); uip_ds6_maddr_add(&loc_fipaddr);#endif /* UIP_CONF_ROUTER */ return locaddr; } return NULL;}
开发者ID:EmuxEvans,项目名称:deContiki,代码行数:35,
示例4: uip_ds6_prefix_add/*---------------------------------------------------------------------------*/uip_ds6_prefix_t *uip_ds6_prefix_add(uip_ipaddr_t *ipaddr, uint8_t ipaddrlen, uint8_t advertise, uint8_t flags, unsigned long vtime, unsigned long ptime){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_prefix_list, UIP_DS6_PREFIX_NB, sizeof(uip_ds6_prefix_t), ipaddr, ipaddrlen, (uip_ds6_element_t **)&locprefix) == FREESPACE) { locprefix->isused = 1; uip_ipaddr_copy(&locprefix->ipaddr, ipaddr); locprefix->length = ipaddrlen; locprefix->advertise = advertise; locprefix->l_a_reserved = flags; locprefix->vlifetime = vtime; locprefix->plifetime = ptime; PRINTF("Adding prefix "); PRINT6ADDR(&locprefix->ipaddr); PRINTF("length %u, flags %x, Valid lifetime %lx, Preffered lifetime %lx/n", ipaddrlen, flags, vtime, ptime); return locprefix; } else { PRINTF("No more space in Prefix list/n"); } return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:27,
示例5: uip_ds6_addr_add/*---------------------------------------------------------------------------*/uip_ds6_addr_t *uip_ds6_addr_add(uip_ipaddr_t *ipaddr, unsigned long vlifetime, uint8_t type){ loc_loop_state = uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.addr_list, UIP_DS6_ADDR_NB, sizeof(uip_ds6_addr_t), ipaddr, 128, (uip_ds6_element_t **)&locaddr); if(loc_loop_state == NOSPACE) { uip_ds6_addr_clean(); } if(loc_loop_state == FREESPACE) { locaddr->isused = 1; uip_ipaddr_copy(&locaddr->ipaddr, ipaddr); locaddr->type = type; if(vlifetime == 0) { locaddr->isinfinite = 1; } else { locaddr->isinfinite = 0; stimestamp_set(&(locaddr->vlifetime), vlifetime); } locaddr->state = ADDR_PREFERRED; uip_create_solicited_node(ipaddr, &loc_fipaddr); uip_ds6_maddr_add(&loc_fipaddr); return locaddr; } return NULL;}
开发者ID:Feandil,项目名称:RPL_Gateway,代码行数:30,
示例6: uip_ds6_addr_add/*---------------------------------------------------------------------------*/uip_ds6_addr_t *uip_ds6_addr_add(uip_ipaddr_t *ipaddr, unsigned long vlifetime, uint8_t type){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.addr_list, UIP_DS6_ADDR_NB, sizeof(uip_ds6_addr_t), ipaddr, 128, (uip_ds6_element_t **)&locaddr) == FREESPACE) { locaddr->isused = 1; uip_ipaddr_copy(&locaddr->ipaddr, ipaddr); locaddr->type = type; if(vlifetime == 0) { locaddr->isinfinite = 1; } else { locaddr->isinfinite = 0; stimer_set(&(locaddr->vlifetime), vlifetime); }#if UIP_ND6_DEF_MAXDADNS > 0 locaddr->state = ADDR_TENTATIVE; timer_set(&locaddr->dadtimer, random_rand() % (UIP_ND6_MAX_RTR_SOLICITATION_DELAY * CLOCK_SECOND)); locaddr->dadnscount = 0;#else /* UIP_ND6_DEF_MAXDADNS > 0 */ locaddr->state = ADDR_PREFERRED;#endif /* UIP_ND6_DEF_MAXDADNS > 0 */ uip_create_solicited_node(ipaddr, &loc_fipaddr); uip_ds6_maddr_add(&loc_fipaddr); return locaddr; } return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:32,
示例7: uip_ds6_route_add/*---------------------------------------------------------------------------*/uip_ds6_route_t *uip_ds6_route_add(uip_ipaddr_t *ipaddr, uint8_t length, uip_ipaddr_t *nexthop, uint8_t metric){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_routing_table, UIP_DS6_ROUTE_NB, sizeof(uip_ds6_route_t), ipaddr, length, (uip_ds6_element_t **)&locroute) == FREESPACE) { locroute->isused = 1; uip_ipaddr_copy(&(locroute->ipaddr), ipaddr); locroute->length = length; uip_ipaddr_copy(&(locroute->nexthop), nexthop); locroute->metric = metric;#ifdef UIP_DS6_ROUTE_STATE_TYPE memset(&locroute->state, 0, sizeof(UIP_DS6_ROUTE_STATE_TYPE));#endif PRINTF("DS6: adding route: "); PRINT6ADDR(ipaddr); PRINTF(" via "); PRINT6ADDR(nexthop); PRINTF("/n"); ANNOTATE("#L %u 1;blue/n", nexthop->u8[sizeof(uip_ipaddr_t) - 1]); } return locroute;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:29,
示例8: uip_ds6_defrt_lookup/*---------------------------------------------------------------------------*/uip_ds6_defrt_t *uip_ds6_defrt_lookup(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop((uip_ds6_element_t *)uip_ds6_defrt_list, UIP_DS6_DEFRT_NB, sizeof(uip_ds6_defrt_t), ipaddr, 128, (uip_ds6_element_t **)&locdefrt) == FOUND) { return locdefrt; } return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:11,
示例9: uip_ds6_aaddr_lookup/*---------------------------------------------------------------------------*/uip_ds6_aaddr_t *uip_ds6_aaddr_lookup(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop((uip_ds6_element_t *)uip_ds6_if.aaddr_list, UIP_DS6_AADDR_NB, sizeof(uip_ds6_aaddr_t), ipaddr, 128, (uip_ds6_element_t **)&locaaddr) == FOUND) { return locaaddr; } return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:11,
示例10: uip_ds6_maddr_lookup/*---------------------------------------------------------------------------*/uip_ds6_maddr_t *uip_ds6_maddr_lookup(const uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.maddr_list, UIP_DS6_MADDR_NB, sizeof(uip_ds6_maddr_t), (void*)ipaddr, 128, (uip_ds6_element_t **)&locmaddr) == FOUND) { return locmaddr; } return NULL;}
开发者ID:chanderbgoel,项目名称:contiki,代码行数:12,
示例11: uip_ds6_route_info_lookupuip_ds6_route_info_t *uip_ds6_route_info_lookup(uip_ipaddr_t * ipaddr, uint8_t ipaddrlen){ if(uip_ds6_list_loop((uip_ds6_element_t *) uip_ds6_route_info_list, UIP_DS6_ROUTE_INFO_NB, sizeof(uip_ds6_route_info_t), ipaddr, ipaddrlen, (uip_ds6_element_t **) & locrtinfo) == FOUND) { return locrtinfo; } return NULL;}
开发者ID:ioannisg,项目名称:Contiki_ATSAM4EXPRO,代码行数:11,
示例12: uip_ds6_prefix_lookup/*---------------------------------------------------------------------------*/uip_ds6_prefix_t *uip_ds6_prefix_lookup(uip_ipaddr_t *ipaddr, uint8_t ipaddrlen){ if(uip_ds6_list_loop((uip_ds6_element_t *)uip_ds6_prefix_list, UIP_DS6_PREFIX_NB, sizeof(uip_ds6_prefix_t), ipaddr, ipaddrlen, (uip_ds6_element_t **)&locprefix) == FOUND) { return locprefix; } return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:12,
示例13: uip_ds6_dup_addr_lookup/*---------------------------------------------------------------------------*/uip_ds6_dup_addr_t *uip_ds6_dup_addr_lookup(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_dup_addr_list, UIP_DS6_DUPADDR_NB, sizeof(uip_ds6_dup_addr_t), ipaddr, 128, (uip_ds6_element_t **)&locdad) == FOUND) { return locdad; } return NULL;}
开发者ID:sdefauw,项目名称:contiki,代码行数:12,
示例14: uip_ds6_nbr_lookup/*---------------------------------------------------------------------------*/uip_ds6_nbr_t *uip_ds6_nbr_lookup(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *) uip_ds6_nbr_cache, UIP_DS6_NBR_NB, sizeof(uip_ds6_nbr_t), ipaddr, 128, (uip_ds6_element_t **) & locnbr) == FOUND) { return locnbr; } return NULL;}
开发者ID:EmuxEvans,项目名称:deContiki,代码行数:12,
示例15: node_info_lookupnode_info_t *node_info_lookup(uip_ipaddr_t * ipaddr){ node_info_t *node; if(uip_ds6_list_loop((uip_ds6_element_t *) node_info_table, UIP_DS6_ROUTE_NB, sizeof(node_info_t), ipaddr, 128, (uip_ds6_element_t **) & node) == FOUND) { return node; } return NULL;}
开发者ID:Ayesha-N,项目名称:6lbr,代码行数:12,
示例16: pgw_nbr_add/*---------------------------------------------------------------------------*/pgw_nbr_t*pgw_nbr_add(uip_ipaddr_t * ipaddr, uip_lladdr_t * lladdr, u8_t isrouter, u8_t state){ int r; r = uip_ds6_list_loop((uip_ds6_element_t *)pgw_6ln_cache, UIP_DS6_NBR_NB, sizeof(pgw_nbr_t), ipaddr, 128, (uip_ds6_element_t **)&locnbr); if(r == FREESPACE) { locnbr->isused = 1; uip_ipaddr_copy(&(locnbr->ipaddr), ipaddr); if(lladdr != NULL) { memcpy(&(locnbr->lladdr), lladdr, UIP_LLADDR_LEN); } else { memset(&(locnbr->lladdr), 0, UIP_LLADDR_LEN); } locnbr->isrouter = isrouter; locnbr->state = state; if(locnbr->state == PGW_GARBAGE_COLLECTIBLE) { stimer_set(&(locnbr->reachable), GARBAGE_COLLECTIBLE_NCE_LIFETIME); } else if (locnbr->state == PGW_TENTATIVE){ stimer_set(&(locnbr->reachable), TENTATIVE_NCE_LIFETIME); } locnbr->aro_pending = 0; locnbr->ra_pending = 0; locnbr->last_lookup = clock_time(); return locnbr; } else if(r == NOSPACE) { /* We did not find any empty slot on the neighbor list, so we need to remove one old entry to make room. */ pgw_nbr_t *n, *oldest; clock_time_t oldest_time; oldest = NULL; oldest_time = clock_time(); for(n = pgw_6ln_cache; n < &pgw_6ln_cache[UIP_DS6_NBR_NB]; n++) { if(n->isused) { if((n->last_lookup < oldest_time) && (n->state == PGW_GARBAGE_COLLECTIBLE)) { /* We do not want to remove any registered or tentative entry */ oldest = n; oldest_time = n->last_lookup; } } } if(oldest != NULL) { pgw_nbr_rm(oldest); return pgw_nbr_add(ipaddr, lladdr, isrouter, state); } } return NULL;}
开发者ID:EmuxEvans,项目名称:6lp-gw,代码行数:54,
示例17: uip_ds6_maddr_add/*---------------------------------------------------------------------------*/uip_ds6_maddr_t *uip_ds6_maddr_add(const uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.maddr_list, UIP_DS6_MADDR_NB, sizeof(uip_ds6_maddr_t), (void*)ipaddr, 128, (uip_ds6_element_t **)&locmaddr) == FREESPACE) { locmaddr->isused = 1; uip_ipaddr_copy(&locmaddr->ipaddr, ipaddr); return locmaddr; } return NULL;}
开发者ID:chanderbgoel,项目名称:contiki,代码行数:14,
示例18: uip_ds6_aaddr_add/*---------------------------------------------------------------------------*/uip_ds6_aaddr_t *uip_ds6_aaddr_add(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.aaddr_list, UIP_DS6_AADDR_NB, sizeof(uip_ds6_aaddr_t), ipaddr, 128, (uip_ds6_element_t **)&locaaddr) == FREESPACE) { locaaddr->isused = 1; uip_ipaddr_copy(&locaaddr->ipaddr, ipaddr); return locaaddr; } return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:14,
示例19: uip_ds6_maddr_add/*---------------------------------------------------------------------------*/uip_ds6_maddr_t *uip_ds6_maddr_add(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.maddr_list, UIP_DS6_MADDR_NB, sizeof(uip_ds6_maddr_t), ipaddr, 128, (uip_ds6_element_t **)&locmaddr) == FREESPACE) { locmaddr->isused = 1; locmaddr->isreported = 0; uip_ipaddr_copy(&locmaddr->ipaddr, ipaddr); mld_report_now(); return locmaddr; } return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:16,
示例20: uip_ds6_addr_lookup/*---------------------------------------------------------------------------*/uip_ds6_addr_t *uip_ds6_addr_lookup(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.addr_list, UIP_DS6_ADDR_NB, sizeof(uip_ds6_addr_t), ipaddr, 128, (uip_ds6_element_t **)&locaddr) == FOUND) { if((!locaddr->isinfinite) && (stimestamp_expired(&locaddr->vlifetime))) { uip_ds6_addr_rm(locaddr); return NULL; } return locaddr; } return NULL;}
开发者ID:Feandil,项目名称:RPL_Gateway,代码行数:16,
示例21: uip_ds6_maddr_lookup/*---------------------------------------------------------------------------*/uip_ds6_maddr_t *uip_ds6_maddr_lookup(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.maddr_list, UIP_DS6_MADDR_NB, sizeof(uip_ds6_maddr_t), ipaddr, 128, (uip_ds6_element_t **)&locmaddr) == FOUND) { if (uip_is_addr_solicited_node(&locmaddr->ipaddr)) { return uip_ds6_maddr_solicited_node_verify(locmaddr); } else { return locmaddr; } } return NULL;}
开发者ID:Feandil,项目名称:RPL_Gateway,代码行数:16,
示例22: uip_ds6_route_add/*---------------------------------------------------------------------------*/uip_ds6_route_t *uip_ds6_route_add(uip_ipaddr_t *ipaddr, uint8_t length, uip_ipaddr_t *nexthop, uint8_t metric){ loc_loop_state = uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_routing_table, UIP_DS6_ROUTE_NB, sizeof(uip_ds6_route_t), ipaddr, length, (uip_ds6_element_t **)&locroute);#ifdef UIP_DS6_ROUTE_STATE_CLEAN if (loc_loop_state == NOSPACE) { for(locroute = uip_ds6_routing_table; locroute < uip_ds6_routing_table + UIP_DS6_ROUTE_NB; ++locroute) { if(locroute->isused && (UIP_DS6_ROUTE_STATE_CLEAN(&locroute->state))) { uip_ds6_route_rm(locroute); loc_loop_state = FREESPACE; break; } } } if (loc_loop_state == NOSPACE) { locroute = NULL; }#endif /* UIP_DS6_ROUTE_STATE_TYPE */ if (loc_loop_state == FREESPACE) { locroute->isused = 1; uip_ipaddr_copy(&(locroute->ipaddr), ipaddr); locroute->length = length; uip_ipaddr_copy(&(locroute->nexthop), nexthop); locroute->metric = metric;#ifdef UIP_DS6_ROUTE_STATE_TYPE memset (&(locroute->state),0,sizeof(UIP_DS6_ROUTE_STATE_TYPE));#endif PRINTF("DS6: adding route: "); PRINT6ADDR(ipaddr); PRINTF(" via "); PRINT6ADDR(nexthop); PRINTF("/n"); ANNOTATE("#L %u 1;blue/n", nexthop->u8[sizeof(uip_ipaddr_t) - 1]); } return locroute;}
开发者ID:Feandil,项目名称:RPL_Gateway,代码行数:49,
示例23: uip_ds6_maddr_add/*---------------------------------------------------------------------------*/uip_ds6_maddr_t *uip_ds6_maddr_add(uip_ipaddr_t *ipaddr){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.maddr_list, UIP_DS6_MADDR_NB, sizeof(uip_ds6_maddr_t), ipaddr, 128, (uip_ds6_element_t **)&locmaddr) == FREESPACE) { locmaddr->isused = 1; uip_ipaddr_copy(&locmaddr->ipaddr, ipaddr);#if UIP_CONF_MLD uip_icmp6_mldv1_schedule_report(locmaddr);#endif return locmaddr; } return NULL;}
开发者ID:dv1990,项目名称:hexabus,代码行数:17,
示例24: uip_ds6_dup_addr_add/*---------------------------------------------------------------------------*/uip_ds6_dup_addr_t *uip_ds6_dup_addr_add(uip_ipaddr_t *ipaddr, uint16_t lifetime, uip_lladdr_t *eui64){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_dup_addr_list, UIP_DS6_DUPADDR_NB, sizeof(uip_ds6_dup_addr_t), ipaddr, 128, (uip_ds6_element_t **)&locdad) == FREESPACE) { locdad->isused = 1; uip_ipaddr_copy(&locdad->ipaddr, ipaddr); if(lifetime != 0) { stimer_set(&locdad->lifetime, lifetime * 60); } memcpy(&locdad->eui64, eui64, UIP_LLADDR_LEN); return locdad; } return NULL;}
开发者ID:sdefauw,项目名称:contiki,代码行数:19,
示例25: ule6loGI_removeMulticastAddr/** * Remove a multicast address from the list. */ule6lo_status_t ule6loGI_removeMulticastAddr(ule6lo_ip6addr_t* ipaddress) { ule6lo_status_t status = STATUS_NO_DEVICE;#if UIP_CONF_MLD uip_ds6_maddr_t *locmaddr; if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_if.maddr_list, UIP_DS6_MADDR_NB, sizeof(uip_ds6_maddr_t), (void*)ipaddress, 128, (uip_ds6_element_t **)&locmaddr) == FOUND) { locmaddr->isused = 0; locmaddr->report_count = 0; stimer_set(&(locmaddr->report_timeout), 0); uip_ds6_maddr_rm(locmaddr); memset(&locmaddr->ipaddr, 0x00, sizeof(uip_ipaddr_t)); status = STATUS_SUCCESS; }#endif return status;}
开发者ID:ULE-Alliance,项目名称:ULE_6LowPan,代码行数:21,
示例26: node_info_addnode_info_t *node_info_add(uip_ipaddr_t * ipaddr){ node_info_t *node = NULL; if(uip_ds6_list_loop ((uip_ds6_element_t *) node_info_table, UIP_DS6_ROUTE_NB, sizeof(node_info_t), ipaddr, 128, (uip_ds6_element_t **) & node) == FREESPACE) { memset(node, 0, sizeof(node_info_t)); node->isused = 1; uip_ipaddr_copy(&(node->ipaddr), ipaddr); node->stats_start = clock_time(); LOG6LBR_6ADDR(DEBUG, ipaddr, "New node created "); } else { LOG6LBR_6ADDR(ERROR, ipaddr, "Not enough memory to create node "); } return node;}
开发者ID:Ayesha-N,项目名称:6lbr,代码行数:19,
示例27: uip_ds6_prefix_add/*---------------------------------------------------------------------------*/uip_ds6_prefix_t *uip_ds6_prefix_add(uip_ipaddr_t *ipaddr, uint8_t ipaddrlen, uint8_t advertise, uint8_t flags, unsigned long vtime, unsigned long ptime){ if(uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_prefix_list, UIP_DS6_PREFIX_NB, sizeof(uip_ds6_prefix_t), ipaddr, ipaddrlen, (uip_ds6_element_t **)&locprefix) == FREESPACE) { locprefix->isused = 1; uip_ipaddr_copy(&locprefix->ipaddr, ipaddr); locprefix->length = ipaddrlen; locprefix->advertise = advertise; locprefix->l_a_reserved = flags; locprefix->vlifetime_val = vtime; locprefix->plifetime = ptime;#if UIP_CONF_6LR if(vtime != 0) { stimer_set(&(locprefix->vlifetime), vtime); locprefix->isinfinite = 0; } else { locprefix->isinfinite = 1; }#endif /* UIP_CONF_6LR */#if UIP_CONF_6LBR /* Increase version in border router */ locbr = uip_ds6_br_lookup(NULL); if(locbr != NULL) { locbr->state = BR_ST_NEW_VERSION; }#endif /* UIP_CONF_6LBR */ PRINTF("Adding prefix "); PRINT6ADDR(&locprefix->ipaddr); PRINTF("length %u, flags %x, Valid lifetime %lx, Preffered lifetime %lx/n", ipaddrlen, flags, vtime, ptime); return locprefix; } else { PRINTF("No more space in Prefix list/n"); } return NULL;}
开发者ID:sdefauw,项目名称:contiki,代码行数:42,
示例28: uip_ds6_route_info_adduip_ds6_route_info_t *uip_ds6_route_info_add(uip_ipaddr_t * ipaddr, uint8_t ipaddrlen, uint8_t flags, unsigned long rlifetime){ if(uip_ds6_list_loop ((uip_ds6_element_t *) uip_ds6_route_info_list, UIP_DS6_ROUTE_INFO_NB, sizeof(uip_ds6_route_info_t), ipaddr, ipaddrlen, (uip_ds6_element_t **) & locrtinfo) == FREESPACE) { locrtinfo->isused = 1; uip_ipaddr_copy(&locrtinfo->ipaddr, ipaddr); locrtinfo->length = ipaddrlen; locrtinfo->flags = flags; locrtinfo->lifetime = rlifetime; PRINTF("Adding route information: length=%u, flags=%x, route lifetime=%lu, dest=", ipaddrlen, flags, rlifetime); return locrtinfo; } else { PRINTF("No more space in route information list/n"); } return NULL;}
开发者ID:ioannisg,项目名称:Contiki_ATSAM4EXPRO,代码行数:21,
示例29: uip_ds6_nbr_add/*---------------------------------------------------------------------------*/uip_ds6_nbr_t *uip_ds6_nbr_add(uip_ipaddr_t *ipaddr, uip_lladdr_t *lladdr, uint8_t isrouter, uint8_t state){ int r; r = uip_ds6_list_loop ((uip_ds6_element_t *)uip_ds6_nbr_cache, UIP_DS6_NBR_NB, sizeof(uip_ds6_nbr_t), ipaddr, 128, (uip_ds6_element_t **)&locnbr); if(r == FREESPACE) { locnbr->isused = 1; uip_ipaddr_copy(&locnbr->ipaddr, ipaddr); if(lladdr != NULL) { memcpy(&locnbr->lladdr, lladdr, UIP_LLADDR_LEN); } else { memset(&locnbr->lladdr, 0, UIP_LLADDR_LEN); } locnbr->isrouter = isrouter; locnbr->state = state;#if UIP_CONF_IPV6_QUEUE_PKT uip_packetqueue_new(&locnbr->packethandle);#endif /* UIP_CONF_IPV6_QUEUE_PKT */ /* timers are set separately, for now we put them in expired state */ stimer_set(&locnbr->reachable, 0); stimer_set(&locnbr->sendns, 0); locnbr->nscount = 0; PRINTF("Adding neighbor with ip addr "); PRINT6ADDR(ipaddr); PRINTF("link addr "); PRINTLLADDR((&(locnbr->lladdr))); PRINTF("state %u/n", state); NEIGHBOR_STATE_CHANGED(locnbr); locnbr->last_lookup = clock_time(); return locnbr; } else if(r == NOSPACE) { /* We did not find any empty slot on the neighbor list, so we need to remove one old entry to make room. */ uip_ds6_nbr_t *n, *oldest; clock_time_t oldest_time; oldest = NULL; oldest_time = clock_time(); for(n = uip_ds6_nbr_cache; n < &uip_ds6_nbr_cache[UIP_DS6_NBR_NB]; n++) { if(n->isused) { if(n->last_lookup < oldest_time) { oldest = n; oldest_time = n->last_lookup; } } } if(oldest != NULL) { uip_ds6_nbr_rm(oldest); return uip_ds6_nbr_add(ipaddr, lladdr, isrouter, state); } } PRINTF("uip_ds6_nbr_add drop/n"); return NULL;}
开发者ID:ChristianKniep,项目名称:hexabus,代码行数:65,
注:本文中的uip_ds6_list_loop函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ uip_ds6_set_addr_iid函数代码示例 C++ uip_ds6_get_link_local函数代码示例 |