On 01.11.2010 11:16, Jan-Niklas Meier wrote: > Hello! > I am currently trying to get a list of all CAN interfaces on my machine. > Im am using ioctl() with SIOCGIFCONF for this purpose as already > mentioned in a previous post on this mailinglist > (http://old.nabble.com/Enumerating-a-list-of-CAN-interfaces-td27603207.html).
> > I found out that it makes no difference with which protocol I create the > socket - I always get all interfaces like lo and eth0. My problem is > that there also is a vcan0 which is not listed. Does this method only > work for nonvirtual CAN interfaces and is there any possibility to get > them listed too? Unfortunately I don't have a "real" CAN device for > testing... Hi Jan-Niklas, i checked both your code and this example: http://www.doctort.org/adam/nerd-notes/enumerating-network-interfaces-on-linux.html It looks like that only interfaces are listed, that have an assigned IP-address. No matter if they are up or down. Maybe there can be passed some flags to the ioctl() that removes the need for assigned IP-addresses ?!? Regards, Oliver > > Here is the code I am using: > > struct ifreq *ifr; > struct ifconf ifc; > int sock, i; > int numif; > > memset(&ifc, 0, sizeof(ifc)); > ifc.ifc_ifcu.ifcu_req = NULL; > ifc.ifc_len = 0; > > /* Create a socket to be able to use ioctl */ > if ((sock = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) { > perror("socket"); > exit(1); > } > > /* First call to determin how much memory will be needed */ > if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) { > perror("ioctl"); > exit(2); > } > > /* Malloc the necessary memory */ > if ((ifr = malloc(ifc.ifc_len)) == NULL) { > perror("malloc"); > exit(3); > } > ifc.ifc_ifcu.ifcu_req = ifr; > > /* Request the infomation */ > if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) { > perror("ioctl2"); > exit(4); > } > close(sock); > > numif = ifc.ifc_len / sizeof(struct ifreq); > for (i = 0; i < numif; i++) { > struct ifreq *r = &ifr[i]; > printf("%-8s\n", r->ifr_name); > } > > free(ifr); > > Regards, > Jan-Niklas > > > > _______________________________________________ > Socketcan-users mailing list > [email protected] > https://lists.berlios.de/mailman/listinfo/socketcan-users _______________________________________________ Socketcan-users mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-users
