static struct in_addr * ipparse_hostnetwork(const char *name, unsigned int *naddrs) { struct in_addr *addrptmp, *addrp; if ((addrptmp = xtables_numeric_to_ipaddr(name)) != NULL || (addrptmp = network_to_ipaddr(name)) != NULL) { addrp = xtables_malloc(sizeof(struct in_addr)); memcpy(addrp, addrptmp, sizeof(*addrp)); *naddrs = 1; return addrp; } if ((addrptmp = host_to_ipaddr(name, naddrs)) != NULL) return addrptmp; xt_params->exit_err(PARAMETER_PROBLEM, "host/network `%s' not found", name); }
/****************************************************** int parse_request: deals with GET requests ******************************************************/ int parse_request(char *msg, int sock) { printf(" *** INCOMING REQUEST ***\n"); char *msg_whole; msg_whole = malloc(MAX_MSG_LENGTH); strcpy(msg_whole, msg); char *URL = get_URL_from_request(msg); //get target URL; will need for caching char *host = get_host_from_request(msg); //get host printf("FINAL URL: %s\nFINAL HOST: %s\n", URL, host); char *ip_addr = host_to_ipaddr(host); if(ip_addr == NULL) return 1; if(cache_check(URL, sock)) return 0; client(ip_addr, msg_whole, sock, URL); //free(URL); return 0; }