You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Patrick J Cherry 885990c5b3 Updated changelog 5 years ago
debian Updated changelog 5 years ago
examples Reorganise under Linux:: 11 years ago
lib/linux Updated linux header constants 5 years ago
test Scaled back the massive allocation of IPs from 11 /24s to 4. 7 years ago
.gitignore Initial commit, work in progress 11 years ago
.hgignore Added patches to remove rubygems requirements. 8 years ago
README Added working and scope handling. 11 years ago
Rakefile Removed need for gcc as a dependency for debian packages. 10 years ago
netlinkrb.gemspec Updated to 0.18 5 years ago


Ruby Netlink

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.


require 'linux/netlink/route'
ip =

# Info about eth0 interface

# Addresses on eth0 interface
ip.addr.list(:index=>"eth0") do |addr|
puts addr.address

See the examples/ and test/ directories for more examples.


ruby 1.9 (tested with ruby 1.9.2), OR ruby 1.8.7 with the ffi library.

Code organisation

There are separate classes for each Netlink protocol providing a high-level
API. These all in turn use the NLSocket class, which has methods for adding
the headers to messages and sending them over a socket. The messages
themselves are built using class Message or RtattrMessage, which in turn are
subclasses of CStruct, which performs the low-level packing and unpa