libmnl to pymnl checklist
-------------------------


This document compares the libmnl and pymnl API to make sure I have
accounted for every function in libmnl.

    libmnl                              pymnl
    ------                              -----
                        socket
                        ------
01) mnl_socket_get_fd               01) Socket.get_sock
02) mnl_socket_get_portid           02) Socket.get_portid
03) mnl_socket_open                 03) Socket.__init__
04) mnl_socket_bind                 04) Socket.bind
05) mnl_socket_recvfrom             05) Socket.send
06) mnl_socket_sendto               06) Socket.recv
07) mnl_socket_close                07) Socket.close
08) mnl_socket_setsockopt           08) Socket.setsockopt
09) mnl_socket_getsockopt           09) Socket.getsockopt

                        nlmsg
                        -----
01) mnl_nlmsg_size                  01) Message.__len__
02) mnl_nlmsg_get_payload           02) Message.get_payload
03) mnl_nlmsg_get_payload_len       03) Payload.__len__
04) mnl_nlmsg_get_payload_offset    04) not applicable
05) mnl_nlmsg_get_payload_tail      05) not applicable
06) mnl_nlmsg_put_header            06) not applicable
07) mnl_nlmsg_put_extra_header      07) Message.put_extra_header
08) mnl_nlmsg_next                  08) MessageList
09) mnl_nlmsg_ok                    09) Message.ok
10) mnl_nlmsg_seq_ok                10) Message.seq_ok
11) mnl_nlmsg_portid_ok             11) Message.portid_ok
12) mnl_nlmsg_fprintf_header        12) Message.printf_header
13) mnl_nlmsg_fprintf_payload       13) Payload.printf
14) mnl_nlmsg_fprintf               14) Message.printf
15) mnl_nlmsg_batch_start           15) not applicable
16) mnl_nlmsg_batch_stop            16) not applicable
17) mnl_nlmsg_batch_next            17) MessageList
18) mnl_nlmsg_batch_reset           18) MessageList
19) mnl_nlmsg_batch_size            19) MessageList.__len__
20) mnl_nlmsg_batch_head            20) MessageList
21) mnl_nlmsg_batch_current         21) MessageList
22) mnl_nlmsg_batch_is_empty        22) MessageList


                        attributes
                        ----------
01) mnl_attr_get_len                01) Attr.__len__
02) mnl_attr_get_payload            02) Attr.get_*
03) mnl_attr_get_payload_len        03) Attr.get_value_len
04) mnl_attr_get_type               04) Attr.get_type
05) mnl_attr_get_u8                 05) Attr.get_u8
06) mnl_attr_get_u16                06) Attr.get_u16
07) mnl_attr_get_u32                07) Attr.get_u32
08) mnl_attr_get_u64                08) Attr.get_u64
09) mnl_attr_get_str                09) Attr.get_str
                                        Attr.get_str_stripped
10) mnl_attr_nest_end               10) not applicable
11) mnl_attr_nest_start             11) Attr.toggle_nested
12) mnl_attr_nest_start_check       12) not applicable
13) mnl_attr_nest_cancel            13) Attr.toggle_nested
14) mnl_attr_next                   14) not applicable
15) mnl_attr_ok                     15) not applicable
16) mnl_attr_parse                  16) AttrParser.parse
17) mnl_attr_parse_nested           17) AttrParser.parse_nested
18) mnl_attr_put                    18) Payload.add_attr
19) mnl_attr_put_u8                 19) Payload.add_attr(Attr.new_u8)
20) mnl_attr_put_u16                20) Payload.add_attr(Attr.new_u16)
21) mnl_attr_put_u32                21) Payload.add_attr(Attr.new_u32)
22) mnl_attr_put_u64                22) Payload.add_attr(Attr.new_u64)
23) mnl_attr_put_str                23) Payload.add_attr(Attr.new_strnz)
24) mnl_attr_put_strz               24) Payload.add_attr(Attr.new_strz)
25) mnl_attr_put_check              25) not applicable
26) mnl_attr_put_u8_check           26) not applicable
27) mnl_attr_put_u16_check          27) not applicable
28) mnl_attr_put_u32_check          28) not applicable
29) mnl_attr_put_u64_check          29) not applicable
30) mnl_attr_put_str_check          30) not applicable
31) mnl_attr_put_strz_check         31) not applicable
32) mnl_attr_type_valid             32) Attr.type_valid
33) __mnl_attr_validate             33) Attr.get_*
34) mnl_attr_validate               34) Attr.get_*
35) mnl_attr_validate2              34) Attr.get_*

                        callback
                        --------
01) mnl_cb_run                      01) AttrParser
                                        ** missing for messages
02) mnl_cb_run2                     02) subclass AttrParser
                                        ** missing for messages





