alue) = GETMAC_TRUE;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Avoid use of trailers");
} else {
* ((GETMAC_BOOL *) value) = GETMAC_FALSE;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Not Avoid use of trailers");
}
break;
case GETMAC_ATTR_IFF_RUNNING: /* Resources allocated */
if (mi->buf[i].ifr_flags & IFF_RUNNING) {
* ((GETMAC_BOOL *) value) = GETMAC_TRUE;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Resources allocated");
} else {
* ((GETMAC_BOOL *) value) = GETMAC_FALSE;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Resources not allocated");
}
break;
case GETMAC_ATTR_IFF_NOARP: /* No address resolution protocol */
if (mi->buf[i].ifr_flags & IFF_NOARP) {
* ((GETMAC_BOOL *) value) = GETMAC_TRUE;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "No address resolution protocol");
} else {
* ((GETMAC_BOOL *) value) = GETMAC_FALSE;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Has address resolution protocol");
}
break;
case GETMAC_ATTR_IFF_PROMISC: /* Receive all packets */
if (mi->buf[i].ifr_flags & IFF_PROMISC) {
* ((GETMAC_BOOL *) value) = GETMAC_TRUE;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Receive all packets");
} else {
* ((GETMAC_BOOL *) value) = GETMAC_FALSE;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Not a promisc mode");
}
break;
case GETMAC_ATTR_IFNAME: /* Interface name, e.g. "en0" */
strcpy (value, mi->buf[i].ifr_name);
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Interface name");
break;
case GETMAC_ATTR_IPADDR: /* Interface address */
strcpy (value, inet_ntoa (((struct sockaddr_in*) (& mi->buf[i].ifr_addr))->sin_addr));
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "Interface address");
break;
case GETMAC_ATTR_HWADDR:
#ifdef SOLARIS
do {
mi->arp.arp_pa.sa_family = AF_INET;
mi->arp.arp_ha.sa_family = AF_INET;
((struct sockaddr_in *) & mi->arp.arp_pa)->sin_addr.s_addr = ((struct sockaddr_in*)(& buf[i].ifr_addr))->sin_addr.s_addr;
if ((ioctl (mi->fd, SIOCGARP, (char *) & mi->arp))) {
err->errcode = errno;
snprintf (err->errmsg, GETMAC_MAX_MSGLEN, "ioctl(SIOCGARP) error (%d): %s", strerror(errno));
return GETMAC_ERROR;
} else {
sprintf (value, "%02x:%02x:%02x:%02x:%02x:%02x",
(unsigned char) mi->arp.arp_ha.sa_data[0],
(unsigned char) mi->arp.arp_ha.sa_data[1],
(unsigned char) mi->arp.arp_ha.sa_data[2],
(unsigned char) mi->arp.arp_ha.sa_data[3],
(unsigned char) mi->arp.arp_ha.sa_data[4],
(unsigned char) mi->arp.arp_ha.sa_data[5] );
}
} while (0);
#else
#if 0
do {
sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
(unsigned char) mi->buf[i].ifr_enaddr[0],
(unsigned char) mi->buf[i].ifr_enaddr[1],
(unsigned char) mi->buf[i].ifr_enaddr[2],
(unsigned char) mi->buf[i].ifr_enaddr[3],
(unsigned char) mi->buf[i].ifr_enaddr[4],
(unsigned char) mi->buf[i].ifr_enaddr[5]);
} while (0);
#else
do {
sprintf (value, "%02x:%02x:%02x:%02x:%02x:%02x",
(unsigned char) mi->buf[i].ifr_hwaddr.sa_data[0],
(unsigned char) mi->buf[i].ifr_hwaddr.sa_data[1],