uint32_t IGMP_init ( void ) { /* Body */ uint32_t error; IGMP_CFG_STRUCT_PTR IGMP_cfg_ptr; /* alloc and init the configuration block */ IGMP_cfg_ptr = RTCS_mem_alloc_zero(sizeof(IGMP_CFG_STRUCT)); if (!IGMP_cfg_ptr) { return RTCSERR_IGMP_CFG; } /* Endif */ /* register the configuration block */ RTCS_setcfg(IGMP, IGMP_cfg_ptr); /* register the igmp protocol in the ip layer */ IP_open(IPPROTO_IGMP, IGMP_service, NULL, &error); if (error != RTCS_OK) { return RTCSERR_IGMP_CFG; } /* Endif */ /* ** When IGMP_init() is called, the only registered interface is the ** loopback interface, so we don't need to join the all-hosts group ** on any interface here. */ return error; } /* Endbody */
uint32_t ICMP_init ( void ) { /* Body */ ICMP_CFG_STRUCT_PTR icmp_cfg_ptr; uint32_t status = RTCS_OK; /* return code */ icmp_cfg_ptr = RTCS_mem_alloc_zero(sizeof(ICMP_CFG_STRUCT)); if (icmp_cfg_ptr == NULL) { return RTCSERR_OUT_OF_MEMORY; } _mem_set_type(icmp_cfg_ptr, MEM_TYPE_ICMP_CFG_STRUCT); RTCS_setcfg(ICMP, icmp_cfg_ptr); IP_open(IPPROTO_ICMP, ICMP_service, NULL, &status); return status; } /* Endbody */