Compare commits

...

25 Commits

Author SHA1 Message Date
Patrick J Cherry
827ca74740 New upstream release 2014-01-21 10:01:42 +00:00
Patrick J Cherry
6cbda4bb58 Added tag 0.15 for changeset 3dae37c40d73 2014-01-21 09:59:32 +00:00
Patrick J Cherry
e0aae9c67c re-tidied up warnings. 2014-01-21 09:51:37 +00:00
Patrick J Cherry
e96601981b Tidied up warnings in nlsocket 2014-01-18 07:08:19 +00:00
Patrick J Cherry
75a6eaca70 Added tag 0.14-1+wheezy1 for changeset babbc25e15f5 2013-11-14 13:38:35 +00:00
Patrick J Cherry
427fa40ef4 New upstream release 2013-11-14 13:37:57 +00:00
Patrick J Cherry
8bbb45af33 Added tag 0.14 for changeset b75625aab29e 2013-11-14 11:50:06 +00:00
nick
d86d0c8408 Automated merge with ssh://dev.bytemark.co.uk/netlinkrb 2013-11-13 17:52:55 +00:00
nick
0281a5e4eb VlanInfo: Parse the new protocol attribute 2013-11-13 17:52:32 +00:00
Patrick J Cherry
84c0414550 Added tag 0.13 for changeset 2344803abef0 2013-11-13 16:19:11 +00:00
Patrick J Cherry
7ad9816fc3 Added tag 0.13-1+wheezy1 for changeset 6681f37480ff 2013-11-13 16:17:36 +00:00
Patrick J Cherry
4e4d0e02b6 New upstream release 2013-11-13 16:16:57 +00:00
nick
610a70fe12 upstream: Add constants we're interested in to Linux kernel 3.12 2013-11-13 16:11:33 +00:00
Patrick J Cherry
a4afa867a1 Added tag 0.12-1+wheezy1 for changeset 5a2086dbce00 2013-09-12 14:27:19 +01:00
Patrick J Cherry
72ce94ef59 Merge, new upstream release 2013-09-12 14:27:08 +01:00
Patrick J Cherry
ee38239429 merge 2013-07-16 16:50:24 +01:00
Patrick J Cherry
33fe733d3f merge 2013-07-16 16:47:11 +01:00
Patrick J Cherry
181d3cd30a Foo 2013-07-16 16:28:40 +01:00
Patrick J Cherry
4ed52c07dd Added tag 0.11-1+wheezy2 for changeset 123ea9ee6130 2013-07-05 14:25:40 +01:00
Patrick J Cherry
ffe52106cd merged heads 2013-07-05 14:25:08 +01:00
Patrick J Cherry
10f11d9bc1 Updated package name to match ruby-packaging standards.
Added patch to remove rubygems requirements.
2013-07-05 14:23:49 +01:00
Patrick J Cherry
4cba09d819 Added patches to remove rubygems requirements. 2013-07-05 14:17:24 +01:00
Patrick J Cherry
9e1b28a8b1 Added tag 0.11-1+wheezy1 for changeset 5db0aa45b5e2 2013-07-05 13:58:14 +01:00
Patrick J Cherry
08050fbec7 Updated packaging for wheezy. 2013-07-05 13:58:07 +01:00
Patrick J Cherry
7eb0b073ec Added wheezy branch 2013-07-05 13:54:39 +01:00
15 changed files with 274 additions and 55 deletions

View File

@@ -1,3 +1,7 @@
^debian/ruby-linux-netlink$
~$
^.config-liblinux-netlink-ruby
^debian/$
^.pc/
^debian/files$
^debian/.*\.substvars$
^debian/.*\.debhelper.log$

75
debian/changelog vendored Normal file
View File

@@ -0,0 +1,75 @@
ruby-linux-netlink (0.15-1+wheezy1) stable; urgency=low
* New upstream release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Tue, 21 Jan 2014 10:01:20 +0000
ruby-linux-netlink (0.14-1+wheezy1) stable; urgency=low
* New upstream release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Thu, 14 Nov 2013 13:37:28 +0000
ruby-linux-netlink (0.13-1+wheezy1) stable; urgency=low
* New upstream release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Wed, 13 Nov 2013 16:16:36 +0000
ruby-linux-netlink (0.12-1+wheezy1) stable; urgency=low
* New upstream release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Thu, 12 Sep 2013 14:26:41 +0100
ruby-linux-netlink (0.11-1+wheezy2) stable; urgency=low
* Switch to dpkg-source 3.0 (quilt) format.
* Added patch to remove rubygems requires.
* Renamed source package to fit in with the new guidelines.
-- Patrick J Cherry <patrick@bytemark.co.uk> Fri, 05 Jul 2013 14:16:30 +0100
linux-netlink-ruby (0.11-1+wheezy1) stable; urgency=low
* New upstream version, repackaged for wheezy.
-- Patrick J Cherry <patrick@bytemark.co.uk> Fri, 05 Jul 2013 14:16:05 +0100
linux-netlink-ruby (0.10-6) stable; urgency=low
* Add ip rule support
-- Nick Thomas <nick@bytemark.co.uk> Thu, 5 Jul 2012 15:19:42 +0100
linux-netlink-ruby (0.10-5) stable; urgency=low
* Updated rattr constants to work with linux 3.2.
* Updated link handler to have new rattrs.
-- Patrick J Cherry <patrick@bytemark.co.uk> Mon, 11 Jun 2012 10:53:37 +0100
linux-netlink-ruby (0.10-4) unstable; urgency=low
* Removed dependency on gcc, in favour of having arch-dependent packages
which rely on build-time ascertation of sizeof size_t.
-- Patrick J Cherry <patrick@bytemark.co.uk> Tue, 24 Jan 2012 15:56:46 +0000
linux-netlink-ruby (0.10-3) unstable; urgency=low
* Updated version number to cover the previous changes.
-- Steve Kemp <steve@bytemark.co.uk> Thu, 12 Jan 2012 12:00:21 +0000
linux-netlink-ruby (0.10-2) unstable; urgency=low
* Added NlSocket.open and scope handling.
-- Matthew Bloch <matthew@bytemark.co.uk> Wed, 18 May 2011 15:27:00 +0100
linux-netlink-ruby (0.10-1) unstable; urgency=low
* Initial release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Thu, 12 May 2011 17:17:45 +0100

1
debian/compat vendored Normal file
View File

@@ -0,0 +1 @@
7

18
debian/control vendored Normal file
View File

@@ -0,0 +1,18 @@
Source: ruby-linux-netlink
Maintainer: Matthew Bloch <matthew@bytemark.co.uk>
Uploaders: Patrick J Cherry <patrick@bytemark.co.uk>
Section: ruby
Priority: optional
Build-Depends: debhelper (>= 7), gem2deb, rake, ruby-ffi
Standards-Version: 3.8.0
XS-Ruby-Versions: all
Package: ruby-linux-netlink
Architecture: any
Depends: ruby | ruby-interpreter, ruby-ffi, ${misc:Depends}
Provides: liblinux-netlink-ruby1.8, liblinux-netlink-ruby1.9.1
XB-Ruby-Versions: ${ruby:Versions}
Description: Netlink socket library for Ruby
This library provides an API for using a Linux Netlink socket, for doing
things like manipulating IP interfaces and routes programmatically, and
capturing packets from ULOG.

20
debian/copyright vendored Normal file
View File

@@ -0,0 +1,20 @@
Ruby Netlink
============
Copyright (c) 2011 Bytemark Computer Consulting Ltd
Licence:
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
On Debian GNU/Linux systems, the complete text of the GNU General Public
License can be found in /usr/share/common-licenses/GPL or in the dpkg
source as the file COPYING

View File

@@ -0,0 +1,32 @@
Removed "require rubygems" from everywhere.
--- a/lib/linux/iptables.rb
+++ b/lib/linux/iptables.rb
@@ -1,11 +1,6 @@
require 'socket'
require 'linux/constants'
-
-begin
- require 'ffi'
-rescue LoadError
- require('rubygems') ? retry : raise
-end
+require 'ffi'
# Good things about FFI::Struct:
--- a/lib/linux/sendmsg.rb
+++ b/lib/linux/sendmsg.rb
@@ -1,12 +1,7 @@
# Patchup to add Socket#sendmsg and Socket#recvmsg for ruby 1.8
if BasicSocket.instance_methods.grep(/^sendmsg$/).empty?
- begin
- require 'ffi'
- rescue LoadError
- require('rubygems') ? retry : raise
- end
-
+ require 'ffi'
class BasicSocket
module FFIExt

1
debian/patches/series vendored Normal file
View File

@@ -0,0 +1 @@
remove-rubygems-requirements

1
debian/ruby-linux-netlink.examples vendored Normal file
View File

@@ -0,0 +1 @@
examples/*

2
debian/ruby-test-files.yaml vendored Normal file
View File

@@ -0,0 +1,2 @@
---
- test/t_route.rb

23
debian/rules vendored Executable file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/make -f
#
# export DH_VERBOSE=1
#
# Uncomment to ignore all test failures (but the tests will run anyway)
# export DH_RUBY_IGNORE_TESTS=all
#
# Uncomment to ignore some test failures (but the tests will run anyway).
# Valid values:
# export DH_RUBY_IGNORE_TESTS=ruby1.8 ruby1.9.1 require-rubygems
#
# If you need to specify the .gemspec (eg there is more than one)
# export DH_RUBY_GEMSPEC=gem.gemspec
%:
dh $@ --buildsystem=ruby --with ruby
override_dh_auto_build-arch:
rake lib/linux/c_struct_sizeof_size_t.rb
override_dh_auto_clean:
rake clean

1
debian/source/format vendored Normal file
View File

@@ -0,0 +1 @@
3.0 (quilt)

View File

@@ -29,8 +29,8 @@ module Linux
NETLINK_SCSITRANSPORT = 18
NETLINK_ECRYPTFS = 19
NETLINK_RDMA = 20
NETLINK_CRYPTO = 21
NETLINK_CRYPTO = 21
NLM_F_REQUEST = 1
NLM_F_MULTI = 2
NLM_F_ACK = 4
@@ -40,72 +40,74 @@ module Linux
NLM_F_MATCH = 0x200
NLM_F_ATOMIC = 0x400
NLM_F_DUMP = (NLM_F_ROOT|NLM_F_MATCH)
NLM_F_REPLACE = 0x100
NLM_F_EXCL = 0x200
NLM_F_CREATE = 0x400
NLM_F_APPEND = 0x800
NLMSG_ALIGNTO = 4 # same on i686 and x86_64
NLMSG_NOOP = 0x1
NLMSG_ERROR = 0x2
NLMSG_DONE = 0x3
NLMSG_OVERRUN = 0x4
NETLINK_ADD_MEMBERSHIP = 1
NETLINK_DROP_MEMBERSHIP = 2
NETLINK_PKTINFO = 3
NETLINK_BROADCAST_ERROR = 4
NETLINK_NO_ENOBUFS = 5
NETLINK_RX_RING = 6
NETLINK_TX_RING = 7
NETLINK_UNCONNECTED = 0
NETLINK_CONNECTED = 1
NLA_F_NESTED = (1 << 15)
NLA_F_NET_BYTEORDER = (1 << 14)
NLA_TYPE_MASK = ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
NLA_ALIGNTO = 4 # same on i686 and x86_64
# from linux/rtnetlink.h.
RTM_NEWLINK = 16
RTM_DELLINK = 17
RTM_GETLINK = 18
RTM_SETLINK = 19
RTM_NEWADDR = 20
RTM_NEWADDR = 20
RTM_DELADDR = 21
RTM_GETADDR = 22
RTM_NEWROUTE = 24
RTM_DELROUTE = 25
RTM_GETROUTE = 26
RTM_NEWNEIGH = 28
RTM_DELNEIGH = 29
RTM_GETNEIGH = 30
RTM_NEWRULE = 32
RTM_DELRULE = 33
RTM_GETRULE = 34
RTM_NEWQDISC = 36
RTM_DELQDISC = 37
RTM_GETQDISC = 38
RTM_NEWTCLASS = 40
RTM_DELTCLASS = 41
RTM_GETTCLASS = 42
RTM_NEWTFILTER = 44
RTM_DELTFILTER = 45
RTM_GETTFILTER = 46
RTM_NEWACTION = 48
RTM_DELACTION = 49
RTM_GETACTION = 50
RTM_NEWPREFIX = 52
RTM_GETMULTICAST = 58
RTM_GETANYCAST = 62
@@ -113,16 +115,25 @@ module Linux
RTM_NEWNEIGHTBL = 64
RTM_GETNEIGHTBL = 66
RTM_SETNEIGHTBL = 67
RTM_NEWNDUSEROPT = 68
RTM_NEWADDRLABEL = 72
RTM_DELADDRLABEL = 73
RTM_GETADDRLABEL = 74
RTM_GETDCB = 78
RTM_SETDCB = 79
RTM_NEWNETCONF = 80
RTM_GETNETCONF = 82
RTM_NEWMDB = 84
RTM_DELMDB = 85
RTM_GETMDB = 86
# RT#type
RTN_UNSPEC = 0
RTN_UNICAST = 1
@@ -136,7 +147,7 @@ module Linux
RTN_THROW = 9
RTN_NAT = 10
RTN_XRESOLVE = 11
# RT#protocol
RTPROT_UNSPEC = 0
RTPROT_REDIRECT = 1
@@ -152,7 +163,8 @@ module Linux
RTPROT_XORP = 14
RTPROT_NTK = 15
RTPROT_DHCP = 16
RTPROT_MROUTED = 17
# RT#scope, IFAddr#scope
RT_SCOPE_UNIVERSE = 0
RT_SCOPE_SITE = 200
@@ -172,7 +184,7 @@ module Linux
RT_TABLE_DEFAULT = 253
RT_TABLE_MAIN = 254
RT_TABLE_LOCAL = 255
# routing message attributes
RTA_UNSPEC = 0
RTA_DST = 1
@@ -188,7 +200,13 @@ module Linux
RTA_CACHEINFO = 12
RTA_TABLE = 15
RTA_MARK = 16
RTA_MFC_STATS = 17
# Keys for RT#nh_flags
RTNH_F_DEAD = 1 # Nexthop is dead (used by multipath)
RTNH_F_PERVASIVE = 2 # Do recursive gateway lookup
RTNH_F_ONLINK = 4 # Gateway is forced on link
# Keys for RT#metrics
RTAX_UNSPEC = 0
RTAX_LOCK = 1
@@ -205,7 +223,8 @@ module Linux
RTAX_FEATURES = 12
RTAX_RTO_MIN = 13
RTAX_INITRWND = 14
RTAX_QUICKACK = 15
# from linux/if_link.h
IFLA_UNSPEC = 0
IFLA_ADDRESS = 1
@@ -236,11 +255,26 @@ module Linux
IFLA_AF_SPEC = 26
IFLA_GROUP = 27
IFLA_NET_NS_FD = 28
IFLA_EXT_MASK = 29
IFLA_EXT_MASK = 29
IFLA_PROMISCUITY = 30
IFLA_NUM_TX_QUEUES = 31
IFLA_NUM_RX_QUEUES = 32
IFLA_CARRIER = 33
IFLA_PHYS_PORT_ID = 34
BRIDGE_MODE_UNSPEC = 0
BRIDGE_MODE_HAIRPIN = 1
IFLA_BRPORT_UNSPEC = 0
IFLA_BRPORT_STATE = 1 # Spanning tree state
IFLA_BRPORT_PRIORITY = 2 # " priority
IFLA_BRPORT_COST = 3 # " cost
IFLA_BRPORT_MODE = 4 # mode (hairpin)
IFLA_BRPORT_GUARD = 5 # bpdu guard
IFLA_BRPORT_PROTECT = 6 # root port protection
IFLA_BRPORT_FAST_LEAVE = 7 # multicast fast leave
IFLA_BRPORT_LEARNING = 8 # mac learning
IFLA_BRPORT_UNICAST_FLOOD = 9 # flood unicast traffic
IFLA_INFO_UNSPEC = 0
IFLA_INFO_KIND = 1 # "vlan", "gre" etc
@@ -253,23 +287,28 @@ module Linux
IFLA_VLAN_FLAGS = 2 # struct ifla_vlan_flags
IFLA_VLAN_EGRESS_QOS = 3 # followed by instance of IFLA_VLAN_QOS_*
IFLA_VLAN_INGRESS_QOS = 4 # followed by instance of IFLA_VLAN_QOS_*
IFLA_VLAN_PROTOCOL = 5
IFLA_VLAN_QOS_UNSPEC = 0
IFLA_VLAN_QOS_MAPPING = 1
IFLA_VLAN_QOS_MAPPING = 1
IFLA_MACVLAN_UNSPEC = 0
IFLA_MACVLAN_MODE = 1
IFLA_MACVLAN_FLAGS = 2
MACVLAN_MODE_PRIVATE = 1
MACVLAN_MODE_VEPA = 2
MACVLAN_MODE_BRIDGE = 4
MACVLAN_MODE_PASSTHRU = 8
# TODO: VXLAN and VF stuff is missing here
# linux/if_vlan.h
VLAN_FLAG_REORDER_HDR = 0x1
VLAN_FLAG_GVRP = 0x2
VLAN_FLAG_LOOSE_BINDING = 0x4
VLAN_FLAG_MVRP = 0x8
# from linux/if_addr.h
IFA_UNSPEC = 0
IFA_ADDRESS = 1
@@ -290,7 +329,7 @@ module Linux
IFA_F_TENTATIVE = 0x40
IFA_F_PERMANENT = 0x80
# from linux/if_arp.h
# from linux/if_arp.h - selected subset
ARPHRD_NETROM = 0
ARPHRD_ETHER = 1
ARPHRD_EETHER = 2
@@ -348,7 +387,7 @@ module Linux
NF_INET_LOCAL_OUT = 3
NF_INET_POST_ROUTING = 4
NF_INET_NUMHOOKS = 5
NFPROTO_UNSPEC = 0
NFPROTO_IPV4 = 2
NFPROTO_ARP = 3
@@ -360,7 +399,7 @@ module Linux
IPQ_COPY_NONE = 0
IPQ_COPY_META = 1
IPQ_COPY_PACKET = 2
IPQM_MODE = 17
IPQM_VERDICT = 18
IPQM_PACKET = 19
@@ -369,22 +408,22 @@ module Linux
# linux/netfilter_ipv4/ipt_ULOG.h
ULOG_MAC_LEN = 80
ULOG_PREFIX_LEN = 32
# linux/netfilter/x_tables.h
XT_TABLE_MAXNAMELEN = 32
XT_CONTINUE = 0xffffffff
XT_RETURN = (-NF_REPEAT - 1)
XT_INV_PROTO = 0x40
# linux/netfilter_ipv4/ip_tables.h
IPT_TABLE_MAXNAMELEN = XT_TABLE_MAXNAMELEN
IPT_F_FRAG = 0x01
IPT_F_GOTO = 0x02
IPT_F_MASK = 0x03
IPT_INV_VIA_IN = 0x01
IPT_INV_VIA_OUT = 0x02
IPT_INV_TOS = 0x04
@@ -393,17 +432,17 @@ module Linux
IPT_INV_FRAG = 0x20
IPT_INV_PROTO = XT_INV_PROTO
IPT_INV_MASK = 0x7f
IPT_BASE_CTL = 64
IPT_SO_SET_REPLACE = IPT_BASE_CTL
IPT_SO_SET_ADD_COUNTERS = IPT_BASE_CTL + 1
IPT_SO_GET_INFO = IPT_BASE_CTL
IPT_SO_GET_ENTRIES = IPT_BASE_CTL + 1
IPT_SO_GET_REVISION_MATCH = IPT_BASE_CTL + 2
IPT_SO_GET_REVISION_TARGET = IPT_BASE_CTL + 3
IPT_CONTINUE = XT_CONTINUE
IPT_RETURN = XT_RETURN
end

View File

@@ -25,7 +25,7 @@ module Netlink
# 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)
def self.check_sockaddr(str)
af, pad, pid, groups = str.unpack(SOCKADDR_PACK)
af, _, pid, _ = str.unpack(SOCKADDR_PACK)
raise "Bad AF #{af}!" if af != Socket::AF_NETLINK
raise "Bad PID #{pid}!" if pid != 0
end
@@ -135,8 +135,8 @@ module Netlink
# (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)
send_request(type, msg, flags|NLM_F_ACK, sockaddr)
receive_responses(true, timeout) do |type,msg|
return msg if type == resp_type
receive_responses(true, timeout) do |rtype,rmsg|
return rmsg if rtype == resp_type
false
end
end
@@ -144,7 +144,7 @@ module Netlink
# Discard all waiting messages
def drain
while select([@socket], nil, nil, 0)
mesg, sender, rflags, controls = @socket.recvmsg
mesg, _, _, _ = @socket.recvmsg
raise EOFError unless mesg
end
end
@@ -209,7 +209,7 @@ module Netlink
# kernel closes the socket.
def recvmsg(timeout=@timeout)
if select([@socket], nil, nil, timeout)
mesg, sender, rflags, controls = @socket.recvmsg
mesg, sender, _, _ = @socket.recvmsg
raise EOFError unless mesg
sender = sender.to_sockaddr if sender.respond_to? :to_sockaddr
NLSocket.check_sockaddr(sender)

View File

@@ -122,6 +122,7 @@ module Netlink
:unpack => lambda { |str,obj| VlanFlags.parse(str) }
rtattr :egress_qos, IFLA_VLAN_EGRESS_QOS
rtattr :ingress_qos, IFLA_VLAN_INGRESS_QOS
rtattr :protocol, IFLA_VLAN_PROTOCOL, :ushort
end
module Route

View File

@@ -8,12 +8,12 @@ module Netlink
def clear_cache
# No cache
end
def list(filter={}, &blk)
@rtsocket.link.list(filter.merge(:kind=>"vlan"))
end
alias :each :list
# Higher-level API to manipulate VLAN interface.
# nl.vlans.add(
# :link=>"lo",
@@ -24,15 +24,15 @@ module Netlink
def add(opt)
@rtsocket.link.add(vlan_options(opt))
end
def change(opt)
@rtsocket.link.change(vlan_options(opt))
end
def replace(opt)
@rtsocket.link.replace(vlan_options(opt))
end
# Delete vlan given :link and :vlan_id. If you want to delete
# by :index then call link.delete instead.
def delete(opt)
@@ -59,6 +59,7 @@ module Netlink
end
li.data.egress_qos = opt.delete(:egress_qos) if opt.has_key?(:egress_qos)
li.data.ingress_qos = opt.delete(:ingress_qos) if opt.has_key?(:ingress_qos)
li.data.protocol = opt.delete(:protocol) if opt.has_key?(:protocol)
opt
end
end