Tidied up warnings in nlsocket
This commit is contained in:
@@ -25,7 +25,8 @@ module Netlink
|
|||||||
# Check the sockaddr on a received message. Raises an error if the AF
|
# Check the sockaddr on a received message. Raises an error if the AF
|
||||||
# is not AF_NETLINK or the PID is not 0 (this is important for security)
|
# is not AF_NETLINK or the PID is not 0 (this is important for security)
|
||||||
def self.check_sockaddr(str)
|
def self.check_sockaddr(str)
|
||||||
af, pad, pid, groups = str.unpack(SOCKADDR_PACK)
|
# af, pad, pid, groups = str.unpack(SOCKADDR_PACK)
|
||||||
|
af, pid = str.unpack(SOCKADDR_PACK).values_at(0,2)
|
||||||
raise "Bad AF #{af}!" if af != Socket::AF_NETLINK
|
raise "Bad AF #{af}!" if af != Socket::AF_NETLINK
|
||||||
raise "Bad PID #{pid}!" if pid != 0
|
raise "Bad PID #{pid}!" if pid != 0
|
||||||
end
|
end
|
||||||
@@ -135,8 +136,8 @@ module Netlink
|
|||||||
# (Compare: rtnl_talk in lib/libnetlink.c, with answer=NULL)
|
# (Compare: rtnl_talk in lib/libnetlink.c, with answer=NULL)
|
||||||
def cmd(type, msg, flags=NLM_F_REQUEST, resp_type=NLMSG_ERROR, timeout=@timeout, sockaddr=SOCKADDR_DEFAULT)
|
def cmd(type, msg, flags=NLM_F_REQUEST, resp_type=NLMSG_ERROR, timeout=@timeout, sockaddr=SOCKADDR_DEFAULT)
|
||||||
send_request(type, msg, flags|NLM_F_ACK, sockaddr)
|
send_request(type, msg, flags|NLM_F_ACK, sockaddr)
|
||||||
receive_responses(true, timeout) do |type,msg|
|
receive_responses(true, timeout) do |rtype,rmsg|
|
||||||
return msg if type == resp_type
|
return rmsg if rtype == resp_type
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -144,7 +145,8 @@ module Netlink
|
|||||||
# Discard all waiting messages
|
# Discard all waiting messages
|
||||||
def drain
|
def drain
|
||||||
while select([@socket], nil, nil, 0)
|
while select([@socket], nil, nil, 0)
|
||||||
mesg, sender, rflags, controls = @socket.recvmsg
|
# mesg, sender, rflags, controls = @socket.recvmsg
|
||||||
|
mesg = @socket.recvmsg.first
|
||||||
raise EOFError unless mesg
|
raise EOFError unless mesg
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -209,7 +211,8 @@ module Netlink
|
|||||||
# kernel closes the socket.
|
# kernel closes the socket.
|
||||||
def recvmsg(timeout=@timeout)
|
def recvmsg(timeout=@timeout)
|
||||||
if select([@socket], nil, nil, timeout)
|
if select([@socket], nil, nil, timeout)
|
||||||
mesg, sender, rflags, controls = @socket.recvmsg
|
# mesg, sender, rflags, controls = @socket.recvmsg
|
||||||
|
mesg, sender = @socket.recvmsg.first(2)
|
||||||
raise EOFError unless mesg
|
raise EOFError unless mesg
|
||||||
sender = sender.to_sockaddr if sender.respond_to? :to_sockaddr
|
sender = sender.to_sockaddr if sender.respond_to? :to_sockaddr
|
||||||
NLSocket.check_sockaddr(sender)
|
NLSocket.check_sockaddr(sender)
|
||||||
|
Reference in New Issue
Block a user