a ye @s ddlZdddZdddZdS) NFc sdttjgtj|tj|tji}g}|r`tddtfdd|D]}||vrH||qH|S)NcSs |tjS)N)sepolicyZTARGET)yr4/usr/lib/python3.9/site-packages/sepolicy/network.pyzget_types..cs"t|tjo p |dS)NZenabled)setissubsetrPERMS)x check_boolspermrrrr) rsearchZALLOWZSOURCEZCLASSr mapfilterappend)srcZtclassrr ZallowsZnlistirr r get_typess"" rc Csrt\}}i}t|d||g|}t|dkrng||||f<|D]&}|dkr`d|vr\qDd}|dkr|d|vrrqDd|vr|qD|dkr||||f|dgf|d kr||||f|d gfqD|dkr||||f|d gfqD|d kr ||||f|d gfqD|dkr2||||f|dgfqDz$||||f||||ffWqDtyjYqD0qD|S)Nz %s_socketrZephemeral_port_typeZunreserved_port_typeZephemeral_port_tZunreserved_port_tZport_tzall ports without defined typesZ port_typez all portszall ports >= 1024Zreserved_port_typezall ports < 1024Z rpc_port_typezall ports >= 512 and < 1024)rZ gen_port_dictrlenrKeyError) rZprotocolrr ZportrecsZ portrecsbynumdZtlistrrrrget_network_connect#s<    $r)F)F)rrrrrrrs