コード例 #1
0
ファイル: ether.c プロジェクト: aunali1/exopc
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(&eth_dstaddr, eth_addr, 6);

    eth_addr = get_ether_from_ip((char *)&ip_myaddr, 1);
    memcpy(&eth_myaddr, eth_addr, 6);

    printf("me: %x ", ip_myaddr);
    ip_print((char *)&ip_myaddr);
    eth_print((char *)&eth_myaddr);

    printf("dst: %x ", ip_dstaddr);
    ip_print((char *)&ip_dstaddr);
    eth_print((char *)&eth_dstaddr);

    fflush(stdout);
}
コード例 #2
0
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);
}