You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.0 KiB
50 lines
1.0 KiB
|
|
#ifdef CRUD
|
|
#define JUNK a
|
|
#endif
|
|
|
|
#ifdef __QNX__
|
|
/**
|
|
* Does all that QNX trickery to get the MAC address of the interface
|
|
*
|
|
* @param if_name The interface name: ie "en0" or "eth0"
|
|
* @param mac Pointer to a 6-byte array
|
|
* @return SUCCESS or FAILURE
|
|
*/
|
|
static INT32 socket_get_mac_qnx(const CHAR *if_name, UINT8 *mac)
|
|
{
|
|
CHAR ionet_name[50];
|
|
INT32 en_fd;
|
|
|
|
#if QNX_RELEASE >= 630
|
|
nic_config_t nic;
|
|
INT32 dcmd = DCMD_IO_NET_GET_CONFIG;
|
|
#else
|
|
Nic_t nic;
|
|
INT32 dcmd = DCMD_IO_NET_NICINFO;
|
|
#endif
|
|
INT32 ret_val = FAILURE;
|
|
|
|
memset(mac, 0, 6);
|
|
|
|
/* Build the full name */
|
|
snprintf(ionet_name, sizeof(ionet_name), "/dev/io-net/%s", if_name);
|
|
|
|
/* Open the device */
|
|
en_fd = open(ionet_name, O_RDWR);
|
|
if (en_fd >= 0)
|
|
{
|
|
/* Get the interface info */
|
|
if (devctl(en_fd, dcmd, &nic, sizeof(nic), NULL) == EOK)
|
|
{
|
|
memcpy(mac, nic.current_address, 6);
|
|
ret_val = SUCCESS;
|
|
}
|
|
|
|
close(en_fd);
|
|
}
|
|
return(ret_val);
|
|
}
|
|
#endif
|
|
|