static int read_services(void) { struct servent *se; struct service *item; setservent(1); while((se=getservent())) { /* Allocate a service entry. */ item = (struct service *) malloc(sizeof(struct service)); if (item == NULL) perror("netstat"); item->name = strdup(se->s_name); item->number = se->s_port; /* Fill it in. */ if (! strcmp(se->s_proto, "tcp")) { add2list(&tcp_name,item); } else if (! strcmp(se->s_proto, "udp")) { add2list(&udp_name,item); } else if (! strcmp(se->s_proto, "raw")) { add2list(&raw_name,item); } } endservent(); return(0); }
static int read_services(void) { struct servent *se; struct protoent *pe; struct service *item; setservent(1); while ((se = getservent())) { /* Allocate a service entry. */ item = (struct service *) xmalloc(sizeof(struct service)); item->name = strdup(se->s_name); item->number = se->s_port; /* Fill it in. */ if (!strcmp(se->s_proto, "tcp")) { add2list(&tcp_name, item); } else if (!strcmp(se->s_proto, "udp")) { add2list(&udp_name, item); } else if (!strcmp(se->s_proto, "sctp")) { add2list(&sctp_name, item); } else if (!strcmp(se->s_proto, "raw")) { add2list(&raw_name, item); } else { /* ddp, dccp */ free(item->name); free(item); } } endservent(); setprotoent(1); while ((pe = getprotoent())) { /* Allocate a service entry. */ item = (struct service *) xmalloc(sizeof(struct service)); item->name = strdup(pe->p_name); item->number = htons(pe->p_proto); add2list(&raw_name, item); } endprotoent(); return (0); }
void push2tree(char *py, char *id) { if (strlen(id) != 24) { err_ret("bad id"); return; } py_tree *itree, *node; int py_len = strlen(py); for (int i = py_len - 1; i >= 0; i--) { itree = tree; for (int j = i; j < py_len; j++) { int idx = get_idx(py[j]); node = itree; itree = itree->next[idx]; if (itree == NULL) itree = node->next[idx] = make_node(); } itree->ids = add2list(itree->ids, id); } }