static void init(void) { struct hostent *addr; char *eth_addr; if ((addr=gethostbyname(host)) == NULL) { perror("bad hostname"); exit(1); } memcpy((char*)&ip_dstaddr, addr->h_addr, addr->h_length); if ((addr=gethostbyname(myhost)) == NULL) { perror("bad local hostname"); exit(1); } memcpy((char*)&ip_myaddr, addr->h_addr, addr->h_length); eth_addr = get_ether_from_ip((char *)&ip_dstaddr, 1); memcpy(ð_dstaddr, eth_addr, 6); eth_addr = get_ether_from_ip((char *)&ip_myaddr, 1); memcpy(ð_myaddr, eth_addr, 6); printf("me: %x ", ip_myaddr); ip_print((char *)&ip_myaddr); eth_print((char *)ð_myaddr); printf("dst: %x ", ip_dstaddr); ip_print((char *)&ip_dstaddr); eth_print((char *)ð_dstaddr); fflush(stdout); }
const char *get_ether_from_netcardno (int netcardno) { if (netcardno == 0) { return (get_ether_from_ip(get_ip_from_name("localhost") , 1)); } else { if (netcardno < __sysinfo.si_nnetworks) { return (&__sysinfo.si_networks[netcardno].ether_addr[0]); } } return (NULL); }