void chk_iprange(char *value, struct s_ip **base) { int32_t i = 0; char *ptr1, *ptr2, *saveptr1 = NULL; struct s_ip *fip, *lip, *cip; if(!cs_malloc(&cip, sizeof(struct s_ip))) { return; } fip = cip; for(ptr1 = strtok_r(value, ",", &saveptr1); ptr1; ptr1 = strtok_r(NULL, ",", &saveptr1)) { if(i == 0) { ++i; } else { if(!cs_malloc(&cip, sizeof(struct s_ip))) { break; } lip->next = cip; } if((ptr2 = strchr(trim(ptr1), '-'))) { *ptr2++ = '\0'; cs_inet_addr(trim(ptr1), &cip->ip[0]); cs_inet_addr(trim(ptr2), &cip->ip[1]); } else { cs_inet_addr(ptr1, &cip->ip[0]); IP_ASSIGN(cip->ip[1], cip->ip[0]); } lip = cip; } lip = *base; *base = fip; clear_sip(&lip); }
static void serverip_fn(const char *token, char *value, void *setting, FILE *f) { IN_ADDR_T srvip = *(IN_ADDR_T *)setting; if(value) { if(strlen(value) == 0) { set_null_ip((IN_ADDR_T *)setting); } else { cs_inet_addr(value, (IN_ADDR_T *)setting); } return; } if(IP_ISSET(srvip) || cfg.http_full_cfg) { fprintf_conf(f, token, "%s\n", cs_inet_ntoa(srvip)); } }