It was 3 Mar 2007 18:43:57 -0800, when MonkeeSage wrote: > Bart, > > Can you try this and let us know if it works for FreeBSD?
thanks for you suggestions! > import socket, fcntl, struct > > def _ifinfo(sock, addr, ifname): > iface = struct.pack('256s', ifname[:15]) > info = fcntl.ioctl(sock.fileno(), addr, iface) > if addr == 0x8927: > hwaddr = [] > for char in info[18:24]: > hwaddr.append(hex(ord(char))[2:]) > return ':'.join(hwaddr) > else: > return socket.inet_ntoa(info[20:24]) > > def ifconfig(ifname): > ifreq = {'ifname': ifname} > sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) > try: > ifreq['addr'] = _ifinfo(sock, 0x8915, ifname) # SIOCGIFADDR > ifreq['brdaddr'] = _ifinfo(sock, 0x8919, ifname) # > SIOCGIFBRDADDR > ifreq['netmask'] = _ifinfo(sock, 0x891b, ifname) # > SIOCGIFNETMASK > ifreq['hwaddr'] = _ifinfo(sock, 0x8927, ifname) # > SIOCSIFHWADDR > except: > pass > sock.close() > return ifreq apparenlty, it doesn't. :-( I changes the except block into except Exception, e: print e and added if __name__ == '__main__': print ifconfig('ng0') print ifconfig('vr0') print ifconfig('vr2') print ifconfig('xl0') ng0 exists and has an IP (virtual interface created by mpd) vr0 exists but does not have an IP (phisical interface for mpd) vr2 exists and has an IP configured xl0 does not exist output: [Errno 25] Inappropriate ioctl for device {'ifname': 'ng0'} [Errno 25] Inappropriate ioctl for device {'ifname': 'vr0'} [Errno 25] Inappropriate ioctl for device {'ifname': 'vr2'} [Errno 25] Inappropriate ioctl for device {'ifname': 'xl0'} however, in Linux I get the following results: [Errno 99] Cannot assign requested address {'ifname': 'eth0'} {'hwaddr': '0:17:f2:4c:a5:c', 'ifname': 'ath0', 'netmask': '255.255.255.0', 'addr': '192.168.50.104', 'brdaddr': '192.168.50.255'} {'hwaddr': '0:0:0:0:0:0', 'ifname': 'tun0', 'netmask': '255.255.255.255', 'addr': '192.168.3.6', 'brdaddr': '0.0.0.0'} [Errno 19] No such device {'ifname': 'wielewoele'} which seems 100% correct. -- regards, BBBart Susie: You'd get a good grade without doing any work. Calvin: So? Susie: It's wrong to get rewards you haven't earned. Calvin: I've never heard of anyone who couldn't live with that. -- http://mail.python.org/mailman/listinfo/python-list