def io_transfer(iosock,flag,ifreq):
"""
send & recieve an ifreq struct
:param iosock: io socket
:param flag: sockios control call
:param ifreq: ifreq to send
:returns: an the ifreq struct recieved
"""
try:
return ioctl(iosock.fileno(),flag,ifreq)
except (AttributeError,struct.error) as e:
# either sock is not valid or a bad value passed to ifreq
if e.message.find('fileno'): raise error(errno.ENOTSOCK,"Bad socket")
else: raise error(errno.EINVAL,e)
except IOError as e:
# generally device cannot be found sort but can also be
# permissions etc, catch and reraise as our own
if e.errno is not None: # just in case we have a none 2-tuple error
raise error(e.errno,e.strerror)
else:
raise error(-1,e)
except Exception as e:
# blanket catchall
raise error(-1,e.args[0])
评论列表
文章目录