static void proc_reg_resp(struct msg_ac_reg_resp_t *msg, int len, int proto) { sys_debug("Receive ac reg response packet\n"); if(len < sizeof(*msg)) { sys_err("Receive error msg ac reg response packet\n"); return; } /* md5sum3 = packet + random1 + password */ if(chap_msg_cmp_md5((void *)msg, sizeof(*msg), get_random(msg->header.mac))) { sys_err("ac reg response packet chap error\n"); return; } strncpy(sysstat.acuuid, msg->header.acuuid, UUID_LEN); memcpy(sysstat.dmac, msg->header.mac, ETH_ALEN); if(msg->acaddr.sin_addr.s_addr) sysstat.server = msg->acaddr; if(msg->apaddr.sin_addr.s_addr) setaddr((void *)&msg->apaddr); pr_ipv4(&msg->acaddr); /* if have connect to remote ac, close it. * and connect to local ac */ if(sysstat.sock >= 0) close(sysstat.sock); ac_reconnect(); sysstat.isreg = 1; }
int main(int argc, char **argv) { char *ptr, **pptr; struct hostent *hptr; while (--argc > 0) { ptr = *++argv; if ( (hptr = gethostbyname(ptr)) == NULL) { err_msg("gethostbyname error for host: %s: %s", ptr, hstrerror(h_errno)); continue; } printf("official host name: %s\n", hptr->h_name); for (pptr = hptr->h_aliases; *pptr != NULL; pptr++) printf(" alias: %s\n", *pptr); switch (hptr->h_addrtype) { case AF_INET: pr_ipv4(hptr->h_addr_list); break; default: err_ret("unknown address type"); break; } } exit(0); }