<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
BQ                 @   s   d Z ddlZddlmZmZmZmZ ddlmZmZm	Z	 dZ
dZdZdZdZd	Zd
ZdZdZdZdZdZd	Zd
ZG dd dZdd ZeZG dd deZG dd dZee	ZeeZdS )z
Netlink message generation/parsing

Copyright 2007        Johannes Berg <johannes@sipsolutions.net>

GPLv2+; See copying for details.
    N)NLM_F_REQUESTNLMSG_MIN_TYPEMessageparse_attributes)
NulStrAttr
ConnectionNETLINK_GENERIC                  c               @   s   e Zd ZdddZdd ZdS )GenlHdrr   c             C   s   || _ || _d S )N)cmdversion)selfr   r    r   /usr/lib/python3.6/genetlink.py__init__   s    zGenlHdr.__init__c             C   s   t jd| j| jS )NBBxx)structpackr   r   )r   r   r   r   _dump!   s    zGenlHdr._dumpN)r   )__name__
__module____qualname__r   r   r   r   r   r   r      s   
r   c             C   s   t tjd|  S )Nr   )r   r   unpack)datar   r   r   _genl_hdr_parse$   s    r   c               @   s&   e Zd Zg dfddZedd ZdS )GeNlMessager   c             C   s4   || _ || _|| _tj| ||t| j g| d d S )N)flagspayload)r   attrsfamilyr   r   r   )r   r$   r   r#   r!   r   r   r   r   *   s
    
zGeNlMessage.__init__c             C   sP   | j  }|j}t|d d }t|j|jg |j}t|dd  |_|j	|_	|S )Nr   )
recvr"   r   r    typer   r!   r   r#   r   )connmsgZpacketZhdrZgenlmsgr   r   r   r%   1   s    zGeNlMessage.recvN)r   r   r   r   staticmethodr%   r   r   r   r   r    )   s   r    c               @   s   e Zd Zdd Zdd ZdS )
Controllerc             C   s
   || _ d S )N)r'   )r   r'   r   r   r   r   >   s    zController.__init__c             C   sB   t t|}tttt|gd}|j| j tj| j}|j	t
 j S )N)r!   r#   )r   CTRL_ATTR_FAMILY_NAMEr    GENL_ID_CTRLCTRL_CMD_GETFAMILYr   sendr'   r%   r#   CTRL_ATTR_FAMILY_IDu16)r   r$   amr   r   r   get_family_id@   s    
zController.get_family_idN)r   r   r   r   r3   r   r   r   r   r*   =   s   r*   )__doc__r   Ziotop.netlinkr   r   r   r   r   r   r   ZCTRL_CMD_UNSPECZCTRL_CMD_NEWFAMILYZCTRL_CMD_DELFAMILYr-   ZCTRL_CMD_NEWOPSZCTRL_CMD_DELOPSZCTRL_CMD_GETOPSZCTRL_ATTR_UNSPECr/   r+   ZCTRL_ATTR_VERSIONZCTRL_ATTR_HDRSIZEZCTRL_ATTR_MAXATTRZCTRL_ATTR_OPSr   r   r,   r    r*   Z
connectionZ
controllerr   r   r   r   <module>   s0   