| |
| #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 |
| |