BOOL cg_socket_joingroup(CgSocket *sock, char *mcastAddr, char *ifAddr) { cg_log_debug_l4("Entering...\n"); UW optval; ER ret; optval = ascii_to_ipaddr(mcastAddr); ret = udp_set_opt(sock->id, IP_ADD_MEMBERSHIP, &optval, sizeof(optval)); cg_log_debug_l4("Leaving...\n"); return (ret == E_OK) ? TRUE : FALSE; }
static int udp_op_ioctl(struct socket * sock, struct sock_req * req, __unused int blk) { int r; debug_udp_print("socket num %ld req %c %ld %ld", get_sock_num(sock), (unsigned char) (req->req >> 8), req->req & 0xff, _MINIX_IOCTL_SIZE(req->req)); switch (req->req) { case NWIOSUDPOPT: r = udp_set_opt(sock, req->endpt, req->grant); break; case NWIOGUDPOPT: r = udp_get_opt(sock, req->endpt, req->grant); break; default: r = ENOTTY; } return r; }