File: //opt/alt/python37/lib/python3.7/site-packages/exabgp/netlink/__pycache__/netlink.cpython-37.pyc
B
RP�em � @ s� d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddl m
Z
ddlmZ dd l
mZ yeed
� W n ek
r� ed��Y nX G dd
� d
e�ZdS )z�
netlink.py
Created by Thomas Mangin on 2015-03-31.
Copyright (c) 2009-2017 Exa Networks. All rights reserved.
License: 3-clause BSD. (See the COPYRIGHT file)
� N)�pack)�unpack)�calcsize)�
namedtuple)�NetLinkError)�Sequence)�
Attributes�
AF_NETLINKz;This module only works on unix version with netlink supportc @ s� e Zd ZdZdZedd�Ze�ejej e�Z
G dd� de�ZG dd� de�Z
G d d
� d
e�Ze
jde
jdiZed
d� �Zedd� �Zeejdfdd��ZdS )�NetLinkTr �Messagez+format_type control_flags sequence pid datac @ s e Zd ZdZee�ZdS )zNetLink.HeaderZIHHIIN)�__name__�
__module__�__qualname__�PACKr �LEN� r r �G/opt/alt/python37/lib/python3.7/site-packages/exabgp/netlink/netlink.py�HeaderC s r c @ s e Zd ZdZdZdZdZdS )zNetLink.Command� � � � N)r r
r Z
NLMSG_NOOP�NLMSG_ERROR�
NLMSG_DONE�
NLMSG_OVERRUNr r r r �CommandH s r c @ s@ e Zd ZdZdZdZdZdZdZeeB Z dZ
dZdZdZ
dZd S )
z
NetLink.Flagsr r r � � i i i N)r r
r Z
NLM_F_REQUESTZNLM_F_MULTIZ NLM_F_ACKZ
NLM_F_ECHOZ
NLM_F_ROOTZNLM_F_MATCHZ
NLM_F_DUMPZNLM_F_ATOMICZ
NLM_F_REPLACEZ
NLM_F_EXCLZNLM_F_CREATEZNLM_F_APPENDr r r r �FlagsN s r z
netlink errorznetlink overrunc C s@ t �|�}| jjt|� t|� }t| jj|||||�| | S )N)r �encoder r �lenr r ) �cls�format_type�sequence�
control_flags�pid�body�
attributes�attrs�lengthr r r r e s
zNetLink.encodec c sr xl|rlt | jj|d | jj� �\}}}}}t|�|k r>td��| �|||||| jj|� �V ||d � }qW d S )NzBuffer underrun)r r r r r r �format)r! �datar) r"