Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
B

±á\©Ø@’Lã@sâdZddlmZddlZddlmZddlmZmZddl	m
Z
mZmZm
Z
mZmZmZmZmZmZmZddlmZmZddlmZmZdd	lmZmZdd
lmZddl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'Gdd
„d
ƒZ(e(ƒe_)dS)z2
Routing and network interface handling for IPv6.
é)Úabsolute_importN)Úconf)Ú
resolve_ifaceÚNetworkInterface)Úin6_ptopÚ
in6_cidr2maskÚin6_andÚin6_islladdrÚ
in6_ismlladdrÚin6_isincludedÚin6_isgladdrÚin6_isaddr6to4Úin6_ismaddrÚconstruct_source_candidate_setÚ"get_source_addr_from_candidate_set)Úread_routes6Ú
in6_getifaddr)Ú	inet_ptonÚ	inet_ntop)ÚwarningÚlog_loading)Úpretty_list)ÚAnyÚDictÚListÚOptionalÚSetÚTupleÚUnionc@s‚eZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zddd
„Zdd„Z	dd„Z
ddd„Zdd„Zdd„Z
dd„Zddejfdd„ZdS)ÚRoute6cCs| ¡| ¡dS)N)ÚresyncÚinvalidate_cache)Úself©r#úŠ/build/wlanpi-profiler-8o1rr4/wlanpi-profiler-1.0.9/debian/wlanpi-profiler/opt/wlanpi-profiler/lib/python3.7/site-packages/scapy/route6.pyÚ__init__+szRoute6.__init__cCs
i|_dS)N)Úcache)r"r#r#r$r!0szRoute6.invalidate_cachecCs| ¡tƒ|_g|_dS)N)r!ÚsetÚipv6_ifacesÚroutes)r"r#r#r$Úflush4szRoute6.flushcCsP| ¡tƒ|_tƒ|_x|jD]}|j |d¡q W|jgkrLt d¡dS)NézNo IPv6 support in kernel)r!rr)r'r(ÚaddrÚinfo)r"Úrouter#r#r$r :s
z
Route6.resyncc		CsZg}xD|jD]:\}}}}}}t|ƒj}| d||f|||t|ƒf¡qWt|dgddS)Nz%s/%i)ZDestinationzNext HopZIfacezSrc candidatesZMetricé)ZsortBy)r)rÚdescriptionÚappendÚstrr)	r"ZrtlstÚnetZmskÚgwÚifaceÚcsetÚmetricZif_reprr#r#r$Ú__repr__Fs
zRoute6.__repr__Ncs| d¡dgdd…\}}t|ƒ}|dkr0d}ˆdkrP| |¡\‰}}|g}	n$tƒ}
‡fdd„|
Dƒ}t|||ƒ}	|j ˆ¡|||ˆ|	dfS)	z?Internal function : create a route for 'dst' via 'gw'.
        ú/Ú128Néz::c3s|]}|dˆkr|VqdS)r;Nr#)Ú.0Úx)Údevr#r$ú	<genexpr>ksz$Route6.make_route.<locals>.<genexpr>r/)ÚsplitÚintr.rrr(r,)r"Údstr4r>ÚprefixÚplen_bÚplenZifaddr_uniqr=ZifaddrZlifaddrZdevaddrsr#)r>r$Ú
make_routeYszRoute6.make_routecOs | ¡|j |j||Ž¡dS)zÇEx:
        add(dst="2001:db8:cafe:f000::/56")
        add(dst="2001:db8:cafe:f000::/56", gw="2001:db8:cafe::1")
        add(dst="2001:db8:cafe:f000::/64", gw="2001:db8:cafe::1", dev="eth0")
        N)r!r)r1rF)r"ÚargsZkargsr#r#r$r,rsz
Route6.addcsDt‡fdd„tjjDƒƒs@y|j ˆ¡Wntk
r>YnXdS)zk
        Remove the network interface 'iface' from the list of interfaces
        supporting IPv6.
        c3s|]}|dˆkVqdS)r+Nr#)r<Úr)r5r#r$r?ƒsz+Route6.remove_ipv6_iface.<locals>.<genexpr>N)ÚallrÚroute6r)r(ÚremoveÚKeyError)r"r5r#)r5r$Úremove_ipv6_iface|s
zRoute6.remove_ipv6_ifacecsȈd}| d¡dd…\‰}tˆƒ‰t|ƒ‰‡‡fdd„|jDƒ}ˆrdtˆƒ‰‡fdd„|jDƒ}t|ƒdkrztd	ƒnJt|ƒd
krtdƒn4|j |d¡}| ¡| |j|d¡|j|=dS)
z• Ex:
        delt(dst="::/0")
        delt(dst="2001:db8:cafe:f000::/56")
        delt(dst="2001:db8:cafe:f000::/56", gw="2001:db8:deca::1")
        z/128r9Nr;cs,g|]$}t|dƒˆkr|dˆkr|‘qS)rr/)r)r<r=)rBrEr#r$ú
<listcomp>”szRoute6.delt.<locals>.<listcomp>cs g|]}t|dƒˆkr|‘qS)r;)r)r<r=)r4r#r$rN˜srzNo matching route foundr/z$Found more than one match. Aborting.r+)	r@rrAr)ÚlenrÚindexr!rM)r"rBr4ÚtmprDZto_delÚir#)rBr4rEr$Údelt‰s 

zRoute6.deltcCsÚ| d¡dgdd…\}}t|ƒ}ttj|ƒ}t|ƒ}ttjt||ƒƒ}xvt|j	ƒD]h\}	}
|
\}}}
}}}||krxqV|j
 |¡|
dkr¦|||
||g|f|j	|	<qV|||
||g|f|j	|	<qVW| ¡t
jj ¡dS)Nr9r:r;z::)r@rArÚsocketÚAF_INET6rrrÚ	enumerater)r(r,r!rZnetcacheZin6_neighborr*)r"ÚiffÚaddrZthe_addrZ
the_plen_bZthe_plenÚnaddrÚnmaskZthe_netrRr.r3rEr4r5Ú_r7r#r#r$Úifchange£szRoute6.ifchangecCsFg}x$|jD]}|d|kr| |¡qW| ¡||_| |¡dS)z6 removes all route entries that uses 'iff' interface. r+N)r)r1r!rM)r"rWZ
new_routesÚrtr#r#r$ÚifdelºszRoute6.ifdelcCs„| d¡dgdd…\}}t|ƒ}t|ƒ}ttj|ƒ}t|ƒ}ttjt||ƒƒ}| 	¡|j
 ||d||gdf¡|j 
|¡dS)aÝ
        Add an interface 'iff' with provided address into routing table.

        Ex: ifadd('eth0', '2001:bd8:cafe:1::1/64') will add following entry into  # noqa: E501
            Scapy6 internal routing table:

            Destination           Next Hop  iface  Def src @           Metric
            2001:bd8:cafe:1::/64  ::        eth0   2001:bd8:cafe:1::1  1

            prefix length value can be omitted. In that case, a value of 128
            will be used.
        r9r:Nr;z::r/)r@rrArrTrUrrrr!r)r1r(r,)r"rWrXrDrErYrZrCr#r#r$ÚifaddÅszRoute6.ifaddÚc	s®|pd}| d¡d}|}| dd¡}| d¡}xH|dkrx||d…d d¡}|d|…|||d…}| d¡}q2Wyttj|ƒWn2tjk
r¼t |dtj¡dd	d}YnX|dkr`t|ƒsÚt	|ƒr`t
j}||jkr`|jr`d
d„|j
Dƒ}dd„|Dƒ}d
d„|Dƒ}	|r4|dd}n|	rH|	dd}nt
j}tdt
j|fƒ|}
|dk	rz|d|}
|
|jkr|j|
Sg}x’|j
D]ˆ\}}
}}}}|dk	rÄ||krĐqœt|||
ƒrê| |
||||ff¡n8t	|ƒrœt|ƒrœt|dƒrœ| |
||||ff¡qœW|s`|dkrDt
jddfS|rTtd|ƒt
jddfS|jdd„d|dd|ddf‰‡fdd„|Dƒ}g}xT|D]L}|d}t||dƒ}|dk	r¤| |d|d|d||dff¡q¤W|gkrtd|ƒt
jddfSt|ƒdkrvg}t|ƒrJt|ƒrJdd„|Dƒ}n"t|ƒs^t|ƒrldd„|Dƒ}|rv|}|}
|dk	r|d|}
|dd|j|
<|ddS)a:
        Provide best route to IPv6 destination address, based on Scapy
        internal routing table content.

        When a set of address is passed (e.g. ``2001:db8:cafe:*::1-5``) an
        address of the set is used. Be aware of that behavior when using
        wildcards in upper parts of addresses !

        If 'dst' parameter is a FQDN, name resolution is performed and result
        is used.

        if optional 'dev' parameter is provided a specific interface, filtering
        is performed to limit search to route associated to that interface.
        z::/0r9rÚ*Ú0ú-Nú:éÿÿÿÿcSsg|]}|dtjkr|‘qS)r+)rr5)r<r.r#r#r$rNsz Route6.route.<locals>.<listcomp>cSs$g|]}|d|dfdkr|‘qS)rr/)z::rr#)r<r.r#r#r$rNscSs$g|]}|d|dfdkr|‘qS)rr/)zfe80::é@r#)r<r.r#r#r$rNsr+zRThe conf.iface interface (%s) does not support IPv6! Using %s instead for routing!z%%z::1z::z:No route found for IPv6 destination %s (no default route?)cSs|d|dfS)Nrr/r#)r=r#r#r$Ú<lambda>:ózRoute6.route.<locals>.<lambda>)Úkeyr/cs$g|]}|d|dfˆkr|‘qS)rr/r#)r<r=)Ú	best_plenr#r$rN=sr;zHFound a route for IPv6 destination '%s', but no possible source address.cSs g|]}t|ddƒr|‘qS)r;r/)r
)r<r=r#r#r$rNXscSs"g|]}|ddtjkr|‘qS)r;r)rr5)r<r=r#r#r$rN[s)r@ÚreplaceÚfindrrTrUÚerrorÚgetaddrinfor	r
rr5r(r)Z
loopback_namerr&rr1ÚsortrrOrr
r)r"rBr>ÚverboseZsavedstÚidxÚmZ
tmp_routesZdefault_routesZ	ll_routesÚkÚpathsÚprEr4r5r6ÚmeÚresÚpathZtmp_cZsrcaddrrQr#)rjr$r.ÝsŽ

"

"


,


zRoute6.route)NN)N)Ú__name__Ú
__module__Ú__qualname__r%r!r*r r8rFr,rMrSr\r^r_rÚverbr.r#r#r#r$r)s


r)*Ú__doc__Ú
__future__rrTZscapy.configrZscapy.interfacesrrZscapy.utils6rrrr	r
rrr
rrrZ
scapy.archrrZscapy.pton_ntoprrZscapy.errorrrZscapy.utilsrZscapy.compatrrrrrrrrrJr#r#r#r$Ú<module>s4$B