Lines Matching full:netlink
21 # Generic Netlink code which should really be in some library, but I can't quickly find one.
25 class Netlink:
26 # Netlink socket
34 # Netlink message
108 return f"Netlink error: {os.strerror(self.error)}\n{self.nl_msg}"
130 self.type = self._type & ~Netlink.NLA_TYPE_MASK
131 self.is_nest = self._type & Netlink.NLA_F_NESTED
203 if self.nl_type == Netlink.NLMSG_ERROR:
207 elif self.nl_type == Netlink.NLMSG_DONE:
213 if self.nl_flags & Netlink.NLM_F_ACK_TLVS and extack_off:
217 if extack.type == Netlink.NLMSGERR_ATTR_MSG:
219 elif extack.type == Netlink.NLMSGERR_ATTR_MISS_TYPE:
221 elif extack.type == Netlink.NLMSGERR_ATTR_MISS_NEST:
223 elif extack.type == Netlink.NLMSGERR_ATTR_OFFS:
225 elif extack.type == Netlink.NLMSGERR_ATTR_POLICY:
238 if attr.type == Netlink.NL_POLICY_TYPE_ATTR_TYPE:
240 policy['type'] = Netlink.AttrType(type).name
241 elif attr.type == Netlink.NL_POLICY_TYPE_ATTR_MIN_VALUE_S:
243 elif attr.type == Netlink.NL_POLICY_TYPE_ATTR_MAX_VALUE_S:
245 elif attr.type == Netlink.NL_POLICY_TYPE_ATTR_MIN_VALUE_U:
247 elif attr.type == Netlink.NL_POLICY_TYPE_ATTR_MAX_VALUE_U:
249 elif attr.type == Netlink.NL_POLICY_TYPE_ATTR_MIN_LENGTH:
251 elif attr.type == Netlink.NL_POLICY_TYPE_ATTR_MAX_LENGTH:
253 elif attr.type == Netlink.NL_POLICY_TYPE_ATTR_BITFIELD32_MASK:
255 elif attr.type == Netlink.NL_POLICY_TYPE_ATTR_MASK:
314 with socket.socket(socket.AF_NETLINK, socket.SOCK_RAW, Netlink.NETLINK_GENERIC) as sock:
315 sock.setsockopt(Netlink.SOL_NETLINK, Netlink.NETLINK_CAP_ACK, 1)
317 msg = _genl_msg(Netlink.GENL_ID_CTRL,
318 Netlink.NLM_F_REQUEST | Netlink.NLM_F_ACK | Netlink.NLM_F_DUMP,
319 Netlink.CTRL_CMD_GETFAMILY, 1)
332 print("Netlink error:", nl_msg.error)
340 if attr.type == Netlink.CTRL_ATTR_FAMILY_ID:
342 elif attr.type == Netlink.CTRL_ATTR_FAMILY_NAME:
344 elif attr.type == Netlink.CTRL_ATTR_MAXATTR:
346 elif attr.type == Netlink.CTRL_ATTR_MCAST_GROUPS:
352 if entry_attr.type == Netlink.CTRL_ATTR_MCAST_GRP_NAME:
354 elif entry_attr.type == Netlink.CTRL_ATTR_MCAST_GRP_ID:
415 super().__init__(family_name, Netlink.NETLINK_GENERIC)
474 if self.proto == "netlink-raw":
483 # Note that netlink will use conservative (min) message size for
487 # Netlink will always allocate at least PAGE_SIZE - sizeof(skb_shinfo)
494 self.sock.setsockopt(Netlink.SOL_NETLINK, Netlink.NETLINK_CAP_ACK, 1)
495 self.sock.setsockopt(Netlink.SOL_NETLINK, Netlink.NETLINK_EXT_ACK, 1)
496 self.sock.setsockopt(Netlink.SOL_NETLINK, Netlink.NETLINK_GET_STRICT_CHK, 1)
513 self.sock.setsockopt(Netlink.SOL_NETLINK, Netlink.NETLINK_ADD_MEMBERSHIP,
563 nl_type |= Netlink.NLA_F_NESTED
567 nl_type |= Netlink.NLA_F_NESTED
614 nl_type |= Netlink.NLA_F_NESTED
641 idx = i | Netlink.NLA_F_NESTED
1008 print("Netlink error in ntf!?", os.strerror(-nl_msg.error))
1012 print("Netlink done while checking for ntf!?")
1053 nl_flags = Netlink.NLM_F_REQUEST | Netlink.NLM_F_ACK
1100 print("Netlink warning:")
1103 if Netlink.NLM_F_DUMP in req_flags:
1138 req_flags.append(Netlink.NLM_F_DUMP)