Escribí un código muy simple usando struct iwreq. Además, esperaba que esto fuera un error. Pero está compilado y funciona.
Miré dentro de linux/wireless.h que tiene la definición de struct iwreq. Y el iwreq no tiene ifr_name como miembro.
¿Alguien me puede dar una idea? Aquí está el código simple.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <linux/wireless.h> int main(void) { char *intf = "eth0"; struct iwreq iwr; strncpy(iwr.ifr_name, intf, sizeof(iwr.ifr_name)); printf("main : intf = %s, iwr.ifr_name = %s\n", intf, iwr.ifr_name); return 0; }wireless.h incluye if.h , y dentro if.h puedes encontrar:
#define ifr_name ifr_ifrn.ifrn_name /* interface name */Así que el código se traduce a:
strncpy(iwr.ifr_ifrn.ifrn_name, intf, sizeof(iwr.ifr_ifrn.ifrn_name));/usr/include/linux/wireless.h incluye linux/if.h:
#include <linux/if.h> /* for IFNAMSIZ and co... */Y en /usr/include/linux/if.h hay:
#define ifr_name ifr_ifrn.ifrn_name /* interface name */