Add skeleton of module initializer

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add const with preferred socket buffer size

This is copied from MNL_SOCKET_BUFFER_SIZE.

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add skeleton of netlink socket definition

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add Socket to pymnl.nlsocket

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add bind() to Socket

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add skeleton for message handler

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add Message class

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add packed() method to return packed message

The result of struct.pack() is what will be sent through a socket.

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add send() to send a netlink message object through the socket

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add recv() to receive a netlink message and return a netlink message object

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add get_portid() for netlink socket

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add some netlink flags

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add Payload class to manage a netlink message's payload

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add Payload.set()

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add Payload.get()

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add Payload.size() to return the payload's size in bytes

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add Payload.format() to return the struct format for the payload

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Rework Message init to use Payload class

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Use Payload methods in Message.packed()

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>
Add skeleton for attribute handler

Signed-off-by: Sean Robinson <seankrobinson@gmail.com>