Skip to content

unixnut/cpylmnl

 
 

Repository files navigation

cpylmnl

Python wrapper of libmnl using ctypes, under heavy development

sample

see examples

installation

not prepared yet

requires

  • libmnl
  • Python >= 2.6
  • test reqs (optional): python-coverage, python-nose

links

from C to Python

  • "nlstruct.py" is helper for representing netlink structs by ctypes.
  • symbols are defined in "_libmnlh.py".
  • binding functions in "_cproto.py".
  • tweaking for Python in each "_nlmsg.py", "_attr.py", "_socket.py", "_callback.py"
  • letting those be Python class in "_init_.py"

comparison

original cpylmnl remarks
mnl_attr_get_type Attr.get_type
mnl_attr_get_len Attr.get_len
mnl_attr_get_payload_len Attr.get_payload_len
mnl_attr_get_payload Attr.get_payload
(add) Attr.get_payload_v returns array of c_ubyte
(add) Attr.get_payload_as cast specified class
mnl_attr_ok Attr.ok
mnl_attr_next Attr.next_attribute returns contents, not pointer
mnl_attr_type_valid Attr.type_valid
mnl_attr_validate Attr.validate
mnl_attr_validate2 Attr.validate2
mnl_attr_parse Nlmsg.parse
mnl_attr_parse_nested Attr.parse_nested
mnl_attr_parse_payload attr_parse_payload
mnl_attr_get_u8 Attr.get_u8
mnl_attr_get_u16 Attr.get_u16
mnl_attr_get_u32 Attr.get_u32
mnl_attr_get_u64 Attr.get_u64
mnl_attr_get_str Attr.get_str
mnl_attr_put Nlmsg.put require ctypes data type
mnl_attr_put_u8 Nlmsg.put_u8
mnl_attr_put_u16 Nlmsg.put_u16
mnl_attr_put_u32 Nlmsg.put_u32
mnl_attr_put_u64 Nlmsg.put_u64
mnl_attr_put_str Nlmsg.putstr
mnl_attr_put_strz Nlmsg.putstrz
mnl_attr_nest_start Nlmsg.nest_start returns contents
mnl_attr_put_check Nlmsg.put_check require ctypes data type
mnl_attr_put_u8_check Nlmsg.put_u8_check
mnl_attr_put_u16_check Nlmsg.put_u16_check
mnl_attr_put_u32_check Nlmsg.put_u32_check
mnl_attr_put_u64_check Nlmsg.put_u64_check
mnl_attr_put_str_check Nlmsg.put_str_check
mnl_attr_put_strz_check Nlmsg.put_strz_check
mnl_attr_nest_start_check Nlmsg.nest_start_check returns contents
mnl_attr_nest_end Nlmsg.nest_end
mnl_attr_nest_cancel Nlmsg.nest_cancel
mnl_attr_cb_t mnl_attr_cb_t attr cb decorator
(add) attribute_cb receive Attribute
------------------------------------- ----------------------------- -----------------------------
mnl_nlmsg_size Nlmsg.size
mnl_nlmsg_get_payload_len Nlmsg.get_payload_len
mnl_nlmsg_put_header Nlmsg.put_header buf must be mutable
(add) put_new_header allocate and put header
mnl_nlmsg_put_extra_header Nlmsg.put_extra_header
(add) Nlmsg.put_extra_header_v
(add) Nlmsg.put_extra_header_as
mnl_nlmsg_get_paylod Nlmsg.get_payload
(add) Nlmsg.get_payload_v returns array of c_ubyte
(add) Nlmsg.get_payload_as cast specified class
mnl_nlmsg_get_payload_offset Nlmsg.get_payload_offset
(add) Nlmsg.get_payload_offset_v
(add) Nlmsg.get_payload_offset_as
mnl_nlmsg_ok Nlmsg.ok
mnl_nlmsg_next Nlmsg.next_header
mnl_nlmsg_get_payload_tail Nlmsg.get_payload_tail
mnl_nlmsg_seq_ok Nlmsg.seq_ok
mnl_nlmsg_portid_ok Nlmsg.portid_ok
mnl_nlmsg_fprintf Nlmsg.fprint require file not descriptor
mnl_nlmsg_batch_start NlmsgBatch
mnl_nlmsg_batch_stop NlmsgBatch.stop
mnl_nlmsg_batch_next NlmsgBatch.next_batch
mnl_nlmsg_batch_reset NlmsgBatch.reset
mnl_nlmsg_batch_size NlmsgBatch.size
mnl_nlmsg_batch_head NlmsgBatch.head
mnl_nlmsg_batch_current NlmsgBatch.current
(add) NlmsgBatch.current_v
mnl_nlmsg_batch_is_empty NlmsgBatch.is_empty
------------------------------------- ----------------------------- -----------------------------
mnl_cb_run cb_run
mnl_cb_run2 cb_run2
mnl_cb_t mnl_cb_t cb decorator
(add) header_cb receive Header
------------------------------------- ----------------------------- -----------------------------
mnl_socket_get_fd Socket.get_fd
mnl_socket_get_portid Socket.get_portid
mnl_socket_open Socket pass int as bus
mnl_socket_fdopen Socket pass socket.socket as fd
mnl_socket_bind Socket.bind
mnl_socket_sendto Socket.sendto require mutable buffer
(add) Socket.send_nlmsg pass nlmsghdr instead of buf
mnl_socket_recvfrom Socket.recv_into
(add) Socket.recv require buflen and returns
mutable buffer not bytes
mnl_socket_close Socket.close
mnl_socket_setsockopt Socket.setsockopt require mutable buffer
mnl_socket_getsockopt Socket.getsockopt require buflen, returns bytes
(add) Socket.getsockopt_as
------------------------------------- ----------------------------- -----------------------------
mnl_attr_for_each_nested Attr.nesteds reprerent by iterator
mnl_attr_for_each Nlmsg.attributes
mnl_attr_for_each_payload payload_attributes

About

libmnl wrapper using python ctypes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 51.8%
  • Python 47.2%
  • Other 1.0%