1*cfb92d14SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*cfb92d14SAndroid Build Coastguard Worker# 3*cfb92d14SAndroid Build Coastguard Worker# Copyright (c) 2016, The OpenThread Authors. 4*cfb92d14SAndroid Build Coastguard Worker# All rights reserved. 5*cfb92d14SAndroid Build Coastguard Worker# 6*cfb92d14SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 7*cfb92d14SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are met: 8*cfb92d14SAndroid Build Coastguard Worker# 1. Redistributions of source code must retain the above copyright 9*cfb92d14SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 10*cfb92d14SAndroid Build Coastguard Worker# 2. Redistributions in binary form must reproduce the above copyright 11*cfb92d14SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer in the 12*cfb92d14SAndroid Build Coastguard Worker# documentation and/or other materials provided with the distribution. 13*cfb92d14SAndroid Build Coastguard Worker# 3. Neither the name of the copyright holder nor the 14*cfb92d14SAndroid Build Coastguard Worker# names of its contributors may be used to endorse or promote products 15*cfb92d14SAndroid Build Coastguard Worker# derived from this software without specific prior written permission. 16*cfb92d14SAndroid Build Coastguard Worker# 17*cfb92d14SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18*cfb92d14SAndroid Build Coastguard Worker# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*cfb92d14SAndroid Build Coastguard Worker# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*cfb92d14SAndroid Build Coastguard Worker# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21*cfb92d14SAndroid Build Coastguard Worker# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22*cfb92d14SAndroid Build Coastguard Worker# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23*cfb92d14SAndroid Build Coastguard Worker# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*cfb92d14SAndroid Build Coastguard Worker# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25*cfb92d14SAndroid Build Coastguard Worker# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26*cfb92d14SAndroid Build Coastguard Worker# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27*cfb92d14SAndroid Build Coastguard Worker# POSSIBILITY OF SUCH DAMAGE. 28*cfb92d14SAndroid Build Coastguard Worker# 29*cfb92d14SAndroid Build Coastguard Workerimport os 30*cfb92d14SAndroid Build Coastguard Workerfrom enum import Enum 31*cfb92d14SAndroid Build Coastguard Worker 32*cfb92d14SAndroid Build Coastguard Workerimport coap 33*cfb92d14SAndroid Build Coastguard Workerimport dtls 34*cfb92d14SAndroid Build Coastguard Workerimport ipv6 35*cfb92d14SAndroid Build Coastguard Workerimport lowpan 36*cfb92d14SAndroid Build Coastguard Workerimport mesh_cop 37*cfb92d14SAndroid Build Coastguard Workerimport message 38*cfb92d14SAndroid Build Coastguard Workerimport mle 39*cfb92d14SAndroid Build Coastguard Workerimport net_crypto 40*cfb92d14SAndroid Build Coastguard Workerimport network_data 41*cfb92d14SAndroid Build Coastguard Workerimport network_diag 42*cfb92d14SAndroid Build Coastguard Workerimport network_layer 43*cfb92d14SAndroid Build Coastguard Workerimport simulator 44*cfb92d14SAndroid Build Coastguard Workerimport sniffer 45*cfb92d14SAndroid Build Coastguard Workerfrom tlvs_parsing import SubTlvsFactory 46*cfb92d14SAndroid Build Coastguard Worker 47*cfb92d14SAndroid Build Coastguard WorkerMESH_LOCAL_PREFIX = 'fd00:db8::/64' 48*cfb92d14SAndroid Build Coastguard WorkerMESH_LOCAL_PREFIX_REGEX_PATTERN = '^fd00:0?db8:0{0,4}:0{0,4}' 49*cfb92d14SAndroid Build Coastguard WorkerROUTING_LOCATOR = '64/:0:ff:fe00:/16' 50*cfb92d14SAndroid Build Coastguard WorkerROUTING_LOCATOR_REGEX_PATTERN = r'.*:(0)?:0{0,2}ff:fe00:\w{1,4}$' 51*cfb92d14SAndroid Build Coastguard WorkerLINK_LOCAL = 'fe80:/112' 52*cfb92d14SAndroid Build Coastguard WorkerLINK_LOCAL_REGEX_PATTERN = '^fe80:.*' 53*cfb92d14SAndroid Build Coastguard WorkerALOC_FLAG_REGEX_PATTERN = '.*:fc..$' 54*cfb92d14SAndroid Build Coastguard WorkerLINK_LOCAL_All_THREAD_NODES_MULTICAST_ADDRESS = 'ff32:40:fd00:db8:0:0:0:1' 55*cfb92d14SAndroid Build Coastguard WorkerREALM_LOCAL_All_THREAD_NODES_MULTICAST_ADDRESS = 'ff33:40:fd00:db8:0:0:0:1' 56*cfb92d14SAndroid Build Coastguard WorkerREALM_LOCAL_ALL_NODES_ADDRESS = 'ff03::1' 57*cfb92d14SAndroid Build Coastguard WorkerREALM_LOCAL_ALL_ROUTERS_ADDRESS = 'ff03::2' 58*cfb92d14SAndroid Build Coastguard WorkerLINK_LOCAL_ALL_NODES_ADDRESS = 'ff02::1' 59*cfb92d14SAndroid Build Coastguard WorkerLINK_LOCAL_ALL_ROUTERS_ADDRESS = 'ff02::2' 60*cfb92d14SAndroid Build Coastguard WorkerTMF_PORT = 61631 61*cfb92d14SAndroid Build Coastguard Worker 62*cfb92d14SAndroid Build Coastguard WorkerDOMAIN_PREFIX = 'fd00:7d03:7d03:7d03::/64' 63*cfb92d14SAndroid Build Coastguard WorkerDOMAIN_PREFIX_REGEX_PATTERN = '^fd00:7d03:7d03:7d03:' 64*cfb92d14SAndroid Build Coastguard WorkerDOMAIN_PREFIX_ALTER = 'fd00:7d04:7d04:7d04::/64' 65*cfb92d14SAndroid Build Coastguard Worker 66*cfb92d14SAndroid Build Coastguard WorkerPORT_OFFSET = int(os.getenv('PORT_OFFSET', '0')) 67*cfb92d14SAndroid Build Coastguard WorkerBACKBONE_IPV6_ADDR_START = f'{0x9100 + PORT_OFFSET:04x}' 68*cfb92d14SAndroid Build Coastguard WorkerBACKBONE_PREFIX = f'{BACKBONE_IPV6_ADDR_START}::/64' 69*cfb92d14SAndroid Build Coastguard WorkerBACKBONE_PREFIX_REGEX_PATTERN = f'^{BACKBONE_IPV6_ADDR_START}:' 70*cfb92d14SAndroid Build Coastguard WorkerBACKBONE_DOCKER_NETWORK_NAME = f'backbone{PORT_OFFSET}' 71*cfb92d14SAndroid Build Coastguard WorkerBACKBONE_DOCKER_NETWORK_DEFAULT_ID = 0 72*cfb92d14SAndroid Build Coastguard WorkerBACKBONE_IFNAME = 'eth0' 73*cfb92d14SAndroid Build Coastguard WorkerTHREAD_IFNAME = 'wpan0' 74*cfb92d14SAndroid Build Coastguard Worker 75*cfb92d14SAndroid Build Coastguard WorkerOTBR_DOCKER_IMAGE = os.getenv('OTBR_DOCKER_IMAGE', 'otbr-ot12-backbone-ci') 76*cfb92d14SAndroid Build Coastguard WorkerOTBR_DOCKER_NAME_PREFIX = f'otbr_{PORT_OFFSET}_' 77*cfb92d14SAndroid Build Coastguard Worker 78*cfb92d14SAndroid Build Coastguard WorkerALL_NETWORK_BBRS_ADDRESS = 'ff32:40:fd00:db8:0:0:0:3' 79*cfb92d14SAndroid Build Coastguard Worker 80*cfb92d14SAndroid Build Coastguard WorkerALL_DOMAIN_BBRS_ADDRESS = 'ff32:40:fd00:7d03:7d03:7d03:0:3' 81*cfb92d14SAndroid Build Coastguard WorkerALL_DOMAIN_BBRS_ADDRESS_ALTER = 'ff32:40:fd00:7d04:7d04:7d04:0:3' 82*cfb92d14SAndroid Build Coastguard Worker 83*cfb92d14SAndroid Build Coastguard WorkerONLINK_GUA_PREFIX = '2021::/64' 84*cfb92d14SAndroid Build Coastguard Worker 85*cfb92d14SAndroid Build Coastguard Worker# Any address starts with 'fd' are considered on-link address. 86*cfb92d14SAndroid Build Coastguard WorkerONLINK_PREFIX_REGEX_PATTERN = '^fd' 87*cfb92d14SAndroid Build Coastguard Worker 88*cfb92d14SAndroid Build Coastguard WorkerDEFAULT_NETWORK_KEY = bytearray([ 89*cfb92d14SAndroid Build Coastguard Worker 0x00, 90*cfb92d14SAndroid Build Coastguard Worker 0x11, 91*cfb92d14SAndroid Build Coastguard Worker 0x22, 92*cfb92d14SAndroid Build Coastguard Worker 0x33, 93*cfb92d14SAndroid Build Coastguard Worker 0x44, 94*cfb92d14SAndroid Build Coastguard Worker 0x55, 95*cfb92d14SAndroid Build Coastguard Worker 0x66, 96*cfb92d14SAndroid Build Coastguard Worker 0x77, 97*cfb92d14SAndroid Build Coastguard Worker 0x88, 98*cfb92d14SAndroid Build Coastguard Worker 0x99, 99*cfb92d14SAndroid Build Coastguard Worker 0xaa, 100*cfb92d14SAndroid Build Coastguard Worker 0xbb, 101*cfb92d14SAndroid Build Coastguard Worker 0xcc, 102*cfb92d14SAndroid Build Coastguard Worker 0xdd, 103*cfb92d14SAndroid Build Coastguard Worker 0xee, 104*cfb92d14SAndroid Build Coastguard Worker 0xff, 105*cfb92d14SAndroid Build Coastguard Worker]) 106*cfb92d14SAndroid Build Coastguard Worker 107*cfb92d14SAndroid Build Coastguard Worker 108*cfb92d14SAndroid Build Coastguard Workerclass ADDRESS_TYPE(Enum): 109*cfb92d14SAndroid Build Coastguard Worker LINK_LOCAL = 'LINK_LOCAL' # For Thread interface link-local only 110*cfb92d14SAndroid Build Coastguard Worker GLOBAL = 'GLOBAL' 111*cfb92d14SAndroid Build Coastguard Worker RLOC = 'RLOC' 112*cfb92d14SAndroid Build Coastguard Worker ALOC = 'ALOC' 113*cfb92d14SAndroid Build Coastguard Worker ML_EID = 'ML_EID' 114*cfb92d14SAndroid Build Coastguard Worker DUA = 'DUA' 115*cfb92d14SAndroid Build Coastguard Worker BACKBONE_GUA = 'BACKBONE_GUA' 116*cfb92d14SAndroid Build Coastguard Worker BACKBONE_LINK_LOCAL = 'BACKBONE_LINK_LOCAL' 117*cfb92d14SAndroid Build Coastguard Worker OMR = 'OMR' 118*cfb92d14SAndroid Build Coastguard Worker ONLINK_ULA = 'ONLINK_ULA' 119*cfb92d14SAndroid Build Coastguard Worker ONLINK_GUA = 'ONLINK_GUA' 120*cfb92d14SAndroid Build Coastguard Worker 121*cfb92d14SAndroid Build Coastguard Worker 122*cfb92d14SAndroid Build Coastguard WorkerRSSI = { 123*cfb92d14SAndroid Build Coastguard Worker 'LINK_QULITY_0': -100, 124*cfb92d14SAndroid Build Coastguard Worker 'LINK_QULITY_1': -95, 125*cfb92d14SAndroid Build Coastguard Worker 'LINK_QULITY_2': -85, 126*cfb92d14SAndroid Build Coastguard Worker 'LINK_QULITY_3': -65, 127*cfb92d14SAndroid Build Coastguard Worker} 128*cfb92d14SAndroid Build Coastguard Worker 129*cfb92d14SAndroid Build Coastguard WorkerSNIFFER_ID = int(os.getenv('SNIFFER_ID', 34)) 130*cfb92d14SAndroid Build Coastguard Worker 131*cfb92d14SAndroid Build Coastguard WorkerCHANNEL = 11 132*cfb92d14SAndroid Build Coastguard WorkerCHANNEL_MASK = 0x07fff800 133*cfb92d14SAndroid Build Coastguard WorkerEXTENDED_PANID = 'dead00beef00cafe' 134*cfb92d14SAndroid Build Coastguard WorkerNETWORK_NAME = 'OpenThread' 135*cfb92d14SAndroid Build Coastguard WorkerPANID = 0xface 136*cfb92d14SAndroid Build Coastguard WorkerPSKC = 'c23a76e98f1a6483639b1ac1271e2e27' 137*cfb92d14SAndroid Build Coastguard WorkerSECURITY_POLICY = [672, 'onrc'] 138*cfb92d14SAndroid Build Coastguard Worker 139*cfb92d14SAndroid Build Coastguard WorkerLEADER_STARTUP_DELAY = 12 140*cfb92d14SAndroid Build Coastguard WorkerROUTER_STARTUP_DELAY = 10 141*cfb92d14SAndroid Build Coastguard WorkerED_STARTUP_DELAY = 5 142*cfb92d14SAndroid Build Coastguard WorkerBORDER_ROUTER_STARTUP_DELAY = 20 143*cfb92d14SAndroid Build Coastguard WorkerMAX_NEIGHBOR_AGE = 100 144*cfb92d14SAndroid Build Coastguard WorkerINFINITE_COST_TIMEOUT = 90 145*cfb92d14SAndroid Build Coastguard Worker 146*cfb92d14SAndroid Build Coastguard WorkerMAX_ADVERTISEMENT_INTERVAL = 32 147*cfb92d14SAndroid Build Coastguard WorkerMLE_END_DEVICE_TIMEOUT = 100 148*cfb92d14SAndroid Build Coastguard Worker 149*cfb92d14SAndroid Build Coastguard WorkerAQ_TIMEOUT = 3 150*cfb92d14SAndroid Build Coastguard WorkerADDRESS_QUERY_INITIAL_RETRY_DELAY = 15 151*cfb92d14SAndroid Build Coastguard WorkerDEFAULT_CHILD_TIMEOUT = 6 152*cfb92d14SAndroid Build Coastguard WorkerVIRTUAL_TIME = int(os.getenv('VIRTUAL_TIME', 0)) 153*cfb92d14SAndroid Build Coastguard WorkerPARENT_AGGREGATIOIN_DELAY = 5 154*cfb92d14SAndroid Build Coastguard WorkerDUA_DAD_DELAY = 5 155*cfb92d14SAndroid Build Coastguard WorkerDEFAULT_BBR_REGISTRATION_JITTER = 2 156*cfb92d14SAndroid Build Coastguard WorkerDEFAULT_ROUTER_SELECTION_JITTER = 1 157*cfb92d14SAndroid Build Coastguard Worker 158*cfb92d14SAndroid Build Coastguard WorkerLEADER_NOTIFY_SED_BY_CHILD_UPDATE_REQUEST = True 159*cfb92d14SAndroid Build Coastguard Worker 160*cfb92d14SAndroid Build Coastguard WorkerTHREAD_VERSION_1_1 = 2 161*cfb92d14SAndroid Build Coastguard WorkerTHREAD_VERSION_1_2 = 3 162*cfb92d14SAndroid Build Coastguard WorkerTHREAD_VERSION_1_3 = 4 163*cfb92d14SAndroid Build Coastguard Worker 164*cfb92d14SAndroid Build Coastguard WorkerPACKET_VERIFICATION_NONE = 0 165*cfb92d14SAndroid Build Coastguard WorkerPACKET_VERIFICATION_DEFAULT = 1 166*cfb92d14SAndroid Build Coastguard WorkerPACKET_VERIFICATION_TREL = 2 167*cfb92d14SAndroid Build Coastguard Worker 168*cfb92d14SAndroid Build Coastguard Worker# After leader reset it may retransmit link request 6 times with max 5.5s interval 169*cfb92d14SAndroid Build Coastguard WorkerLEADER_RESET_DELAY = 41 170*cfb92d14SAndroid Build Coastguard Worker# After router reset it may retransmit link request 3 times with max 5.5s interval 171*cfb92d14SAndroid Build Coastguard WorkerROUTER_RESET_DELAY = 23 172*cfb92d14SAndroid Build Coastguard WorkerMLE_MAX_CRITICAL_TRANSMISSION_COUNT = 6 173*cfb92d14SAndroid Build Coastguard WorkerMLE_MAX_TRANSMISSION_COUNT = 3 174*cfb92d14SAndroid Build Coastguard Worker 175*cfb92d14SAndroid Build Coastguard Worker 176*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_data_prefix_sub_tlvs_factories(): 177*cfb92d14SAndroid Build Coastguard Worker return { 178*cfb92d14SAndroid Build Coastguard Worker network_data.TlvType.HAS_ROUTE: 179*cfb92d14SAndroid Build Coastguard Worker network_data.HasRouteFactory(routes_factory=network_data.RoutesFactory( 180*cfb92d14SAndroid Build Coastguard Worker route_factory=network_data.RouteFactory())), 181*cfb92d14SAndroid Build Coastguard Worker network_data.TlvType.BORDER_ROUTER: 182*cfb92d14SAndroid Build Coastguard Worker network_data.BorderRouterFactory(), 183*cfb92d14SAndroid Build Coastguard Worker network_data.TlvType.LOWPAN_ID: 184*cfb92d14SAndroid Build Coastguard Worker network_data.LowpanIdFactory(), 185*cfb92d14SAndroid Build Coastguard Worker } 186*cfb92d14SAndroid Build Coastguard Worker 187*cfb92d14SAndroid Build Coastguard Worker 188*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_data_prefix_sub_tlvs_factory(): 189*cfb92d14SAndroid Build Coastguard Worker return network_data.PrefixSubTlvsFactory( 190*cfb92d14SAndroid Build Coastguard Worker sub_tlvs_factories=create_default_network_data_prefix_sub_tlvs_factories()) 191*cfb92d14SAndroid Build Coastguard Worker 192*cfb92d14SAndroid Build Coastguard Worker 193*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_data_service_sub_tlvs_factories(): 194*cfb92d14SAndroid Build Coastguard Worker return {network_data.TlvType.SERVER: network_data.ServerFactory()} 195*cfb92d14SAndroid Build Coastguard Worker 196*cfb92d14SAndroid Build Coastguard Worker 197*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_data_service_sub_tlvs_factory(): 198*cfb92d14SAndroid Build Coastguard Worker return network_data.ServiceSubTlvsFactory( 199*cfb92d14SAndroid Build Coastguard Worker sub_tlvs_factories=create_default_network_data_service_sub_tlvs_factories()) 200*cfb92d14SAndroid Build Coastguard Worker 201*cfb92d14SAndroid Build Coastguard Worker 202*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_data_commissioning_data_sub_tlvs_factories(): 203*cfb92d14SAndroid Build Coastguard Worker return { 204*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.CHANNEL: mesh_cop.ChannelFactory(), 205*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.STEERING_DATA: mesh_cop.SteeringDataFactory(), 206*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.BORDER_AGENT_LOCATOR: mesh_cop.BorderAgentLocatorFactory(), 207*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.COMMISSIONER_SESSION_ID: mesh_cop.CommissionerSessionIdFactory(), 208*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.COMMISSIONER_UDP_PORT: mesh_cop.CommissionerUdpPortFactory(), 209*cfb92d14SAndroid Build Coastguard Worker } 210*cfb92d14SAndroid Build Coastguard Worker 211*cfb92d14SAndroid Build Coastguard Worker 212*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_data_commissioning_data_sub_tlvs_factory(): 213*cfb92d14SAndroid Build Coastguard Worker return network_data.CommissioningDataSubTlvsFactory( 214*cfb92d14SAndroid Build Coastguard Worker sub_tlvs_factories=create_default_network_data_commissioning_data_sub_tlvs_factories()) 215*cfb92d14SAndroid Build Coastguard Worker 216*cfb92d14SAndroid Build Coastguard Worker 217*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_data_tlvs_factories(): 218*cfb92d14SAndroid Build Coastguard Worker return { 219*cfb92d14SAndroid Build Coastguard Worker network_data.TlvType.PREFIX: 220*cfb92d14SAndroid Build Coastguard Worker network_data.PrefixFactory(sub_tlvs_factory=create_default_network_data_prefix_sub_tlvs_factory()), 221*cfb92d14SAndroid Build Coastguard Worker network_data.TlvType.SERVICE: 222*cfb92d14SAndroid Build Coastguard Worker network_data.ServiceFactory(sub_tlvs_factory=create_default_network_data_service_sub_tlvs_factory()), 223*cfb92d14SAndroid Build Coastguard Worker network_data.TlvType.COMMISSIONING: 224*cfb92d14SAndroid Build Coastguard Worker network_data.CommissioningDataFactory( 225*cfb92d14SAndroid Build Coastguard Worker sub_tlvs_factory=create_default_network_data_commissioning_data_sub_tlvs_factory()), 226*cfb92d14SAndroid Build Coastguard Worker } 227*cfb92d14SAndroid Build Coastguard Worker 228*cfb92d14SAndroid Build Coastguard Worker 229*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_data_tlvs_factory(): 230*cfb92d14SAndroid Build Coastguard Worker return network_data.NetworkDataTlvsFactory(sub_tlvs_factories=create_default_network_data_tlvs_factories()) 231*cfb92d14SAndroid Build Coastguard Worker 232*cfb92d14SAndroid Build Coastguard Worker 233*cfb92d14SAndroid Build Coastguard Workerdef create_default_mle_tlv_route64_factory(): 234*cfb92d14SAndroid Build Coastguard Worker return mle.Route64Factory(link_quality_and_route_data_factory=mle.LinkQualityAndRouteDataFactory()) 235*cfb92d14SAndroid Build Coastguard Worker 236*cfb92d14SAndroid Build Coastguard Worker 237*cfb92d14SAndroid Build Coastguard Workerdef create_default_mle_tlv_network_data_factory(): 238*cfb92d14SAndroid Build Coastguard Worker return mle.NetworkDataFactory(network_data_tlvs_factory=create_default_network_data_tlvs_factory()) 239*cfb92d14SAndroid Build Coastguard Worker 240*cfb92d14SAndroid Build Coastguard Worker 241*cfb92d14SAndroid Build Coastguard Workerdef create_default_mle_tlv_address_registration_factory(): 242*cfb92d14SAndroid Build Coastguard Worker return mle.AddressRegistrationFactory( 243*cfb92d14SAndroid Build Coastguard Worker addr_compressed_factory=mle.AddressCompressedFactory(), 244*cfb92d14SAndroid Build Coastguard Worker addr_full_factory=mle.AddressFullFactory(), 245*cfb92d14SAndroid Build Coastguard Worker ) 246*cfb92d14SAndroid Build Coastguard Worker 247*cfb92d14SAndroid Build Coastguard Worker 248*cfb92d14SAndroid Build Coastguard Workerdef create_default_mle_tlv_thread_discovery_factory(): 249*cfb92d14SAndroid Build Coastguard Worker return mle.ThreadDiscoveryFactory(thread_discovery_tlvs_factory=create_default_thread_discovery_tlvs_factory()) 250*cfb92d14SAndroid Build Coastguard Worker 251*cfb92d14SAndroid Build Coastguard Worker 252*cfb92d14SAndroid Build Coastguard Workerdef create_default_thread_discovery_tlvs_factory(): 253*cfb92d14SAndroid Build Coastguard Worker return mesh_cop.ThreadDiscoveryTlvsFactory(sub_tlvs_factories=create_default_thread_discovery_sub_tlvs_factories()) 254*cfb92d14SAndroid Build Coastguard Worker 255*cfb92d14SAndroid Build Coastguard Worker 256*cfb92d14SAndroid Build Coastguard Workerdef create_default_thread_discovery_sub_tlvs_factories(): 257*cfb92d14SAndroid Build Coastguard Worker return { 258*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.DISCOVERY_REQUEST: mesh_cop.DiscoveryRequestFactory(), 259*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.DISCOVERY_RESPONSE: mesh_cop.DiscoveryResponseFactory(), 260*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.EXTENDED_PANID: mesh_cop.ExtendedPanidFactory(), 261*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.NETWORK_NAME: mesh_cop.NetworkNameFactory(), 262*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.STEERING_DATA: mesh_cop.SteeringDataFactory(), 263*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.JOINER_UDP_PORT: mesh_cop.JoinerUdpPortFactory(), 264*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.COMMISSIONER_UDP_PORT: mesh_cop.CommissionerUdpPortFactory(), 265*cfb92d14SAndroid Build Coastguard Worker } 266*cfb92d14SAndroid Build Coastguard Worker 267*cfb92d14SAndroid Build Coastguard Worker 268*cfb92d14SAndroid Build Coastguard Workerdef create_default_mle_tlvs_factories(): 269*cfb92d14SAndroid Build Coastguard Worker return { 270*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.SOURCE_ADDRESS: mle.SourceAddressFactory(), 271*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.MODE: mle.ModeFactory(), 272*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.TIMEOUT: mle.TimeoutFactory(), 273*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.CHALLENGE: mle.ChallengeFactory(), 274*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.RESPONSE: mle.ResponseFactory(), 275*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.LINK_LAYER_FRAME_COUNTER: mle.LinkLayerFrameCounterFactory(), 276*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.MLE_FRAME_COUNTER: mle.MleFrameCounterFactory(), 277*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.ROUTE64: create_default_mle_tlv_route64_factory(), 278*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.ADDRESS16: mle.Address16Factory(), 279*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.LEADER_DATA: mle.LeaderDataFactory(), 280*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.NETWORK_DATA: create_default_mle_tlv_network_data_factory(), 281*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.TLV_REQUEST: mle.TlvRequestFactory(), 282*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.SCAN_MASK: mle.ScanMaskFactory(), 283*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.CONNECTIVITY: mle.ConnectivityFactory(), 284*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.LINK_MARGIN: mle.LinkMarginFactory(), 285*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.STATUS: mle.StatusFactory(), 286*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.VERSION: mle.VersionFactory(), 287*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.ADDRESS_REGISTRATION: create_default_mle_tlv_address_registration_factory(), 288*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.CHANNEL: mle.ChannelFactory(), 289*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.PANID: mle.PanIdFactory(), 290*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.ACTIVE_TIMESTAMP: mle.ActiveTimestampFactory(), 291*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.PENDING_TIMESTAMP: mle.PendingTimestampFactory(), 292*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.CSL_CHANNEL: mle.CslChannelFactory(), 293*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.CSL_SYNCHRONIZED_TIMEOUT: mle.CslSynchronizedTimeoutFactory(), 294*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.CSL_CLOCK_ACCURACY: mle.CslClockAccuracyFactory(), 295*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.ACTIVE_OPERATIONAL_DATASET: mle.ActiveOperationalDatasetFactory(), 296*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.PENDING_OPERATIONAL_DATASET: mle.PendingOperationalDatasetFactory(), 297*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.TIME_REQUEST: mle.TimeRequestFactory(), 298*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.TIME_PARAMETER: mle.TimeParameterFactory(), 299*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.THREAD_DISCOVERY: create_default_mle_tlv_thread_discovery_factory(), 300*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.LINK_METRICS_QUERY: mle.LinkMetricsQueryFactory(), 301*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.LINK_METRICS_MANAGEMENT: mle.LinkMetricsManagementFactory(), 302*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.LINK_METRICS_REPORT: mle.LinkMetricsReportFactory(), 303*cfb92d14SAndroid Build Coastguard Worker mle.TlvType.LINK_PROBE: mle.LinkProbeFactory(), 304*cfb92d14SAndroid Build Coastguard Worker } 305*cfb92d14SAndroid Build Coastguard Worker 306*cfb92d14SAndroid Build Coastguard Worker 307*cfb92d14SAndroid Build Coastguard Workerdef create_default_mle_crypto_engine(network_key): 308*cfb92d14SAndroid Build Coastguard Worker return net_crypto.CryptoEngine(crypto_material_creator=net_crypto.MleCryptoMaterialCreator(network_key)) 309*cfb92d14SAndroid Build Coastguard Worker 310*cfb92d14SAndroid Build Coastguard Worker 311*cfb92d14SAndroid Build Coastguard Workerdef create_default_mle_message_factory(network_key): 312*cfb92d14SAndroid Build Coastguard Worker return mle.MleMessageFactory( 313*cfb92d14SAndroid Build Coastguard Worker aux_sec_hdr_factory=net_crypto.AuxiliarySecurityHeaderFactory(), 314*cfb92d14SAndroid Build Coastguard Worker mle_command_factory=mle.MleCommandFactory(tlvs_factories=create_default_mle_tlvs_factories()), 315*cfb92d14SAndroid Build Coastguard Worker crypto_engine=create_default_mle_crypto_engine(network_key), 316*cfb92d14SAndroid Build Coastguard Worker ) 317*cfb92d14SAndroid Build Coastguard Worker 318*cfb92d14SAndroid Build Coastguard Worker 319*cfb92d14SAndroid Build Coastguard Workerdef create_deafult_network_tlvs_factories(): 320*cfb92d14SAndroid Build Coastguard Worker return { 321*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.TARGET_EID: 322*cfb92d14SAndroid Build Coastguard Worker network_layer.TargetEidFactory(), 323*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.MAC_EXTENDED_ADDRESS: 324*cfb92d14SAndroid Build Coastguard Worker network_layer.MacExtendedAddressFactory(), 325*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.RLOC16: 326*cfb92d14SAndroid Build Coastguard Worker network_layer.Rloc16Factory(), 327*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.ML_EID: 328*cfb92d14SAndroid Build Coastguard Worker network_layer.MlEidFactory(), 329*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.STATUS: 330*cfb92d14SAndroid Build Coastguard Worker network_layer.StatusFactory(), 331*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.TIME_SINCE_LAST_TRANSACTION: 332*cfb92d14SAndroid Build Coastguard Worker network_layer.TimeSinceLastTransactionFactory(), 333*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.ROUTER_MASK: 334*cfb92d14SAndroid Build Coastguard Worker network_layer.RouterMaskFactory(), 335*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.ND_OPTION: 336*cfb92d14SAndroid Build Coastguard Worker network_layer.NdOptionFactory(), 337*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.ND_DATA: 338*cfb92d14SAndroid Build Coastguard Worker network_layer.NdDataFactory(), 339*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.THREAD_NETWORK_DATA: 340*cfb92d14SAndroid Build Coastguard Worker network_layer.ThreadNetworkDataFactory(create_default_network_data_tlvs_factory()), 341*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.XTAL_ACCURACY: 342*cfb92d14SAndroid Build Coastguard Worker network_layer.XtalAccuracyFactory(), 343*cfb92d14SAndroid Build Coastguard Worker # Routing information are distributed in a Thread network by MLE Routing TLV 344*cfb92d14SAndroid Build Coastguard Worker # which is in fact MLE Route64 TLV. Thread specification v1.1. - Chapter 5.20 345*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.MLE_ROUTING: 346*cfb92d14SAndroid Build Coastguard Worker create_default_mle_tlv_route64_factory(), 347*cfb92d14SAndroid Build Coastguard Worker network_layer.TlvType.IPv6_ADDRESSES: 348*cfb92d14SAndroid Build Coastguard Worker network_layer.IPv6AddressesFactory(), 349*cfb92d14SAndroid Build Coastguard Worker } 350*cfb92d14SAndroid Build Coastguard Worker 351*cfb92d14SAndroid Build Coastguard Worker 352*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_tlvs_factory(): 353*cfb92d14SAndroid Build Coastguard Worker return SubTlvsFactory(sub_tlvs_factories=create_deafult_network_tlvs_factories()) 354*cfb92d14SAndroid Build Coastguard Worker 355*cfb92d14SAndroid Build Coastguard Worker 356*cfb92d14SAndroid Build Coastguard Workerdef create_default_mesh_cop_tlvs_factories(): 357*cfb92d14SAndroid Build Coastguard Worker return { 358*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.CHANNEL: mesh_cop.ChannelFactory(), 359*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.PAN_ID: mesh_cop.PanidFactory(), 360*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.EXTENDED_PANID: mesh_cop.ExtendedPanidFactory(), 361*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.NETWORK_NAME: mesh_cop.NetworkNameFactory(), 362*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.PSKC: mesh_cop.PSKcFactory(), 363*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.NETWORK_KEY: mesh_cop.NetworkKeyFactory(), 364*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.NETWORK_KEY_SEQUENCE_COUNTER: mesh_cop.NetworkKeySequenceCounterFactory(), 365*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.NETWORK_MESH_LOCAL_PREFIX: mesh_cop.NetworkMeshLocalPrefixFactory(), 366*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.STEERING_DATA: mesh_cop.SteeringDataFactory(), 367*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.BORDER_AGENT_LOCATOR: mesh_cop.BorderAgentLocatorFactory(), 368*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.COMMISSIONER_ID: mesh_cop.CommissionerIdFactory(), 369*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.COMMISSIONER_SESSION_ID: mesh_cop.CommissionerSessionIdFactory(), 370*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.SECURITY_POLICY: mesh_cop.SecurityPolicyFactory(), 371*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.GET: mesh_cop.GetFactory(), 372*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.ACTIVE_TIMESTAMP: mesh_cop.ActiveTimestampFactory(), 373*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.COMMISSIONER_UDP_PORT: mesh_cop.CommissionerUdpPortFactory(), 374*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.STATE: mesh_cop.StateFactory(), 375*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.JOINER_DTLS_ENCAPSULATION: mesh_cop.JoinerDtlsEncapsulationFactory(), 376*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.JOINER_UDP_PORT: mesh_cop.JoinerUdpPortFactory(), 377*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.JOINER_IID: mesh_cop.JoinerIIDFactory(), 378*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.JOINER_ROUTER_LOCATOR: mesh_cop.JoinerRouterLocatorFactory(), 379*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.JOINER_ROUTER_KEK: mesh_cop.JoinerRouterKEKFactory(), 380*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.PROVISIONING_URL: mesh_cop.ProvisioningUrlFactory(), 381*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.VENDOR_NAME: mesh_cop.VendorNameFactory(), 382*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.VENDOR_MODEL: mesh_cop.VendorModelFactory(), 383*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.VENDOR_SW_VERSION: mesh_cop.VendorSWVersionFactory(), 384*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.VENDOR_DATA: mesh_cop.VendorDataFactory(), 385*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.VENDOR_STACK_VERSION: mesh_cop.VendorStackVersionFactory(), 386*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.UDP_ENCAPSULATION: mesh_cop.UdpEncapsulationFactory(), 387*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.IPV6_ADDRESS: mesh_cop.Ipv6AddressFactory(), 388*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.PENDING_TIMESTAMP: mesh_cop.PendingTimestampFactory(), 389*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.DELAY_TIMER: mesh_cop.DelayTimerFactory(), 390*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.CHANNEL_MASK: mesh_cop.ChannelMaskFactory(), 391*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.COUNT: mesh_cop.CountFactory(), 392*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.PERIOD: mesh_cop.PeriodFactory(), 393*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.SCAN_DURATION: mesh_cop.ScanDurationFactory(), 394*cfb92d14SAndroid Build Coastguard Worker mesh_cop.TlvType.ENERGY_LIST: mesh_cop.EnergyListFactory(), 395*cfb92d14SAndroid Build Coastguard Worker } 396*cfb92d14SAndroid Build Coastguard Worker 397*cfb92d14SAndroid Build Coastguard Worker 398*cfb92d14SAndroid Build Coastguard Workerdef create_default_mesh_cop_tlvs_factory(): 399*cfb92d14SAndroid Build Coastguard Worker return SubTlvsFactory(sub_tlvs_factories=create_default_mesh_cop_tlvs_factories()) 400*cfb92d14SAndroid Build Coastguard Worker 401*cfb92d14SAndroid Build Coastguard Worker 402*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_diag_tlv_factories(): 403*cfb92d14SAndroid Build Coastguard Worker return { 404*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.EXT_ADDRESS: network_layer.MacExtendedAddressFactory(), 405*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.ADDRESS16: mle.Address16Factory(), 406*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.MODE: mle.ModeFactory(), 407*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.POLLING_PERIOD: mle.TimeoutFactory(), 408*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.CONNECTIVITY: mle.ConnectivityFactory(), 409*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.ROUTE64: create_default_mle_tlv_route64_factory(), 410*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.LEADER_DATA: mle.LeaderDataFactory(), 411*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.NETWORK_DATA: create_default_mle_tlv_network_data_factory(), 412*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.IPV6_ADDRESS_LIST: network_diag.Ipv6AddressListFactory(), 413*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.MAC_COUNTERS: network_diag.MacCountersFactory(), 414*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.BATTERY_LEVEL: network_diag.BatteryLevelFactory(), 415*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.SUPPLY_VOLTAGE: network_diag.SupplyVoltageFactory(), 416*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.CHILD_TABLE: network_diag.ChildTableFactory(), 417*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.CHANNEL_PAGES: network_diag.ChannelPagesFactory(), 418*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.TYPE_LIST: network_diag.TypeListFactory(), 419*cfb92d14SAndroid Build Coastguard Worker network_diag.TlvType.MAX_CHILD_TIMEOUT: network_diag.MaxChildTimeoutFactory() 420*cfb92d14SAndroid Build Coastguard Worker } 421*cfb92d14SAndroid Build Coastguard Worker 422*cfb92d14SAndroid Build Coastguard Worker 423*cfb92d14SAndroid Build Coastguard Workerdef create_default_network_diag_tlvs_factory(): 424*cfb92d14SAndroid Build Coastguard Worker return SubTlvsFactory(sub_tlvs_factories=create_default_network_diag_tlv_factories()) 425*cfb92d14SAndroid Build Coastguard Worker 426*cfb92d14SAndroid Build Coastguard Worker 427*cfb92d14SAndroid Build Coastguard Workerdef create_default_uri_path_based_payload_factories(): 428*cfb92d14SAndroid Build Coastguard Worker network_layer_tlvs_factory = create_default_network_tlvs_factory() 429*cfb92d14SAndroid Build Coastguard Worker mesh_cop_tlvs_factory = create_default_mesh_cop_tlvs_factory() 430*cfb92d14SAndroid Build Coastguard Worker network_diag_tlvs_factory = create_default_network_diag_tlvs_factory() 431*cfb92d14SAndroid Build Coastguard Worker 432*cfb92d14SAndroid Build Coastguard Worker return { 433*cfb92d14SAndroid Build Coastguard Worker '/a/as': network_layer_tlvs_factory, 434*cfb92d14SAndroid Build Coastguard Worker '/a/aq': network_layer_tlvs_factory, 435*cfb92d14SAndroid Build Coastguard Worker '/a/ar': network_layer_tlvs_factory, 436*cfb92d14SAndroid Build Coastguard Worker '/a/ae': network_layer_tlvs_factory, 437*cfb92d14SAndroid Build Coastguard Worker '/a/an': network_layer_tlvs_factory, 438*cfb92d14SAndroid Build Coastguard Worker '/a/sd': network_layer_tlvs_factory, 439*cfb92d14SAndroid Build Coastguard Worker '/c/lp': mesh_cop_tlvs_factory, 440*cfb92d14SAndroid Build Coastguard Worker '/c/cs': mesh_cop_tlvs_factory, 441*cfb92d14SAndroid Build Coastguard Worker '/d/da': network_diag_tlvs_factory, 442*cfb92d14SAndroid Build Coastguard Worker '/d/dg': network_diag_tlvs_factory, 443*cfb92d14SAndroid Build Coastguard Worker '/d/dq': network_diag_tlvs_factory, 444*cfb92d14SAndroid Build Coastguard Worker '/d/dr': network_diag_tlvs_factory, 445*cfb92d14SAndroid Build Coastguard Worker '/n/mr': network_layer_tlvs_factory, 446*cfb92d14SAndroid Build Coastguard Worker '/n/dr': network_layer_tlvs_factory, 447*cfb92d14SAndroid Build Coastguard Worker '/n/dn': network_layer_tlvs_factory, 448*cfb92d14SAndroid Build Coastguard Worker } 449*cfb92d14SAndroid Build Coastguard Worker 450*cfb92d14SAndroid Build Coastguard Worker 451*cfb92d14SAndroid Build Coastguard Workerdef create_default_coap_message_factory(): 452*cfb92d14SAndroid Build Coastguard Worker return coap.CoapMessageFactory( 453*cfb92d14SAndroid Build Coastguard Worker options_factory=coap.CoapOptionsFactory(), 454*cfb92d14SAndroid Build Coastguard Worker uri_path_based_payload_factories=create_default_uri_path_based_payload_factories(), 455*cfb92d14SAndroid Build Coastguard Worker message_id_to_uri_path_binder=coap.CoapMessageIdToUriPathBinder(), 456*cfb92d14SAndroid Build Coastguard Worker ) 457*cfb92d14SAndroid Build Coastguard Worker 458*cfb92d14SAndroid Build Coastguard Worker 459*cfb92d14SAndroid Build Coastguard Workerdef create_default_ipv6_hop_by_hop_options_factories(): 460*cfb92d14SAndroid Build Coastguard Worker return {109: ipv6.MPLOptionFactory()} 461*cfb92d14SAndroid Build Coastguard Worker 462*cfb92d14SAndroid Build Coastguard Worker 463*cfb92d14SAndroid Build Coastguard Workerdef create_default_ipv6_hop_by_hop_options_factory(): 464*cfb92d14SAndroid Build Coastguard Worker return ipv6.HopByHopOptionsFactory(options_factories=create_default_ipv6_hop_by_hop_options_factories()) 465*cfb92d14SAndroid Build Coastguard Worker 466*cfb92d14SAndroid Build Coastguard Worker 467*cfb92d14SAndroid Build Coastguard Workerdef create_default_based_on_src_dst_ports_udp_payload_factory(network_key): 468*cfb92d14SAndroid Build Coastguard Worker mle_message_factory = create_default_mle_message_factory(network_key) 469*cfb92d14SAndroid Build Coastguard Worker coap_message_factory = create_default_coap_message_factory() 470*cfb92d14SAndroid Build Coastguard Worker dtls_message_factory = create_default_dtls_message_factory() 471*cfb92d14SAndroid Build Coastguard Worker 472*cfb92d14SAndroid Build Coastguard Worker return ipv6.UdpBasedOnSrcDstPortsPayloadFactory( 473*cfb92d14SAndroid Build Coastguard Worker src_dst_port_based_payload_factories={ 474*cfb92d14SAndroid Build Coastguard Worker 19788: mle_message_factory, 475*cfb92d14SAndroid Build Coastguard Worker 61631: coap_message_factory, 476*cfb92d14SAndroid Build Coastguard Worker 1000: dtls_message_factory, 477*cfb92d14SAndroid Build Coastguard Worker 5683: coap_message_factory, 478*cfb92d14SAndroid Build Coastguard Worker 5684: dtls_message_factory, 479*cfb92d14SAndroid Build Coastguard Worker }) 480*cfb92d14SAndroid Build Coastguard Worker 481*cfb92d14SAndroid Build Coastguard Worker 482*cfb92d14SAndroid Build Coastguard Workerdef create_default_dtls_message_factory(): 483*cfb92d14SAndroid Build Coastguard Worker return dtls.MessageFactory() 484*cfb92d14SAndroid Build Coastguard Worker 485*cfb92d14SAndroid Build Coastguard Worker 486*cfb92d14SAndroid Build Coastguard Workerdef create_default_ipv6_icmp_body_factories(): 487*cfb92d14SAndroid Build Coastguard Worker return { 488*cfb92d14SAndroid Build Coastguard Worker ipv6.ICMP_DESTINATION_UNREACHABLE: ipv6.ICMPv6DestinationUnreachableFactory(), 489*cfb92d14SAndroid Build Coastguard Worker ipv6.ICMP_ECHO_REQUEST: ipv6.ICMPv6EchoBodyFactory(), 490*cfb92d14SAndroid Build Coastguard Worker ipv6.ICMP_ECHO_RESPONSE: ipv6.ICMPv6EchoBodyFactory(), 491*cfb92d14SAndroid Build Coastguard Worker 'default': ipv6.BytesPayloadFactory(), 492*cfb92d14SAndroid Build Coastguard Worker } 493*cfb92d14SAndroid Build Coastguard Worker 494*cfb92d14SAndroid Build Coastguard Worker 495*cfb92d14SAndroid Build Coastguard Workerdef create_default_ipv6_upper_layer_factories(network_key): 496*cfb92d14SAndroid Build Coastguard Worker return { 497*cfb92d14SAndroid Build Coastguard Worker ipv6.IPV6_NEXT_HEADER_UDP: 498*cfb92d14SAndroid Build Coastguard Worker ipv6.UDPDatagramFactory( 499*cfb92d14SAndroid Build Coastguard Worker udp_header_factory=ipv6.UDPHeaderFactory(), 500*cfb92d14SAndroid Build Coastguard Worker udp_payload_factory=create_default_based_on_src_dst_ports_udp_payload_factory(network_key), 501*cfb92d14SAndroid Build Coastguard Worker ), 502*cfb92d14SAndroid Build Coastguard Worker ipv6.IPV6_NEXT_HEADER_ICMP: 503*cfb92d14SAndroid Build Coastguard Worker ipv6.ICMPv6Factory(body_factories=create_default_ipv6_icmp_body_factories()), 504*cfb92d14SAndroid Build Coastguard Worker } 505*cfb92d14SAndroid Build Coastguard Worker 506*cfb92d14SAndroid Build Coastguard Worker 507*cfb92d14SAndroid Build Coastguard Workerdef create_default_lowpan_extension_headers_factories(): 508*cfb92d14SAndroid Build Coastguard Worker return { 509*cfb92d14SAndroid Build Coastguard Worker ipv6.IPV6_NEXT_HEADER_HOP_BY_HOP: 510*cfb92d14SAndroid Build Coastguard Worker lowpan.LowpanHopByHopFactory(hop_by_hop_options_factory=create_default_ipv6_hop_by_hop_options_factory()) 511*cfb92d14SAndroid Build Coastguard Worker } 512*cfb92d14SAndroid Build Coastguard Worker 513*cfb92d14SAndroid Build Coastguard Worker 514*cfb92d14SAndroid Build Coastguard Workerdef create_default_ipv6_extension_headers_factories(): 515*cfb92d14SAndroid Build Coastguard Worker return { 516*cfb92d14SAndroid Build Coastguard Worker ipv6.IPV6_NEXT_HEADER_HOP_BY_HOP: 517*cfb92d14SAndroid Build Coastguard Worker ipv6.HopByHopFactory(hop_by_hop_options_factory=create_default_ipv6_hop_by_hop_options_factory()) 518*cfb92d14SAndroid Build Coastguard Worker } 519*cfb92d14SAndroid Build Coastguard Worker 520*cfb92d14SAndroid Build Coastguard Worker 521*cfb92d14SAndroid Build Coastguard Workerdef create_default_ipv6_packet_factory(network_key): 522*cfb92d14SAndroid Build Coastguard Worker return ipv6.IPv6PacketFactory( 523*cfb92d14SAndroid Build Coastguard Worker ehf=create_default_ipv6_extension_headers_factories(), 524*cfb92d14SAndroid Build Coastguard Worker ulpf=create_default_ipv6_upper_layer_factories(network_key), 525*cfb92d14SAndroid Build Coastguard Worker ) 526*cfb92d14SAndroid Build Coastguard Worker 527*cfb92d14SAndroid Build Coastguard Worker 528*cfb92d14SAndroid Build Coastguard Workerdef create_default_lowpan_decompressor(context_manager): 529*cfb92d14SAndroid Build Coastguard Worker return lowpan.LowpanDecompressor( 530*cfb92d14SAndroid Build Coastguard Worker lowpan_ip_header_factory=lowpan.LowpanIpv6HeaderFactory(context_manager=context_manager), 531*cfb92d14SAndroid Build Coastguard Worker lowpan_extension_headers_factory=lowpan.LowpanExtensionHeadersFactory( 532*cfb92d14SAndroid Build Coastguard Worker ext_headers_factories=create_default_lowpan_extension_headers_factories()), 533*cfb92d14SAndroid Build Coastguard Worker lowpan_udp_header_factory=lowpan.LowpanUdpHeaderFactory(), 534*cfb92d14SAndroid Build Coastguard Worker ) 535*cfb92d14SAndroid Build Coastguard Worker 536*cfb92d14SAndroid Build Coastguard Worker 537*cfb92d14SAndroid Build Coastguard Workerdef create_default_thread_context_manager(): 538*cfb92d14SAndroid Build Coastguard Worker context_manager = lowpan.ContextManager() 539*cfb92d14SAndroid Build Coastguard Worker context_manager[0] = lowpan.Context(MESH_LOCAL_PREFIX) 540*cfb92d14SAndroid Build Coastguard Worker 541*cfb92d14SAndroid Build Coastguard Worker return context_manager 542*cfb92d14SAndroid Build Coastguard Worker 543*cfb92d14SAndroid Build Coastguard Worker 544*cfb92d14SAndroid Build Coastguard Workerdef create_default_lowpan_parser(context_manager, network_key=DEFAULT_NETWORK_KEY): 545*cfb92d14SAndroid Build Coastguard Worker return lowpan.LowpanParser( 546*cfb92d14SAndroid Build Coastguard Worker lowpan_mesh_header_factory=lowpan.LowpanMeshHeaderFactory(), 547*cfb92d14SAndroid Build Coastguard Worker lowpan_decompressor=create_default_lowpan_decompressor(context_manager), 548*cfb92d14SAndroid Build Coastguard Worker lowpan_fragements_buffers_manager=lowpan.LowpanFragmentsBuffersManager(), 549*cfb92d14SAndroid Build Coastguard Worker ipv6_packet_factory=create_default_ipv6_packet_factory(network_key), 550*cfb92d14SAndroid Build Coastguard Worker ) 551*cfb92d14SAndroid Build Coastguard Worker 552*cfb92d14SAndroid Build Coastguard Worker 553*cfb92d14SAndroid Build Coastguard Workerdef create_default_thread_message_factory(network_key=DEFAULT_NETWORK_KEY): 554*cfb92d14SAndroid Build Coastguard Worker context_manager = create_default_thread_context_manager() 555*cfb92d14SAndroid Build Coastguard Worker lowpan_parser = create_default_lowpan_parser(context_manager, network_key) 556*cfb92d14SAndroid Build Coastguard Worker 557*cfb92d14SAndroid Build Coastguard Worker return message.MessageFactory(lowpan_parser=lowpan_parser) 558*cfb92d14SAndroid Build Coastguard Worker 559*cfb92d14SAndroid Build Coastguard Worker 560*cfb92d14SAndroid Build Coastguard Workerdef create_default_thread_sniffer(use_message_factory=True): 561*cfb92d14SAndroid Build Coastguard Worker return sniffer.Sniffer(create_default_thread_message_factory() if use_message_factory else None) 562*cfb92d14SAndroid Build Coastguard Worker 563*cfb92d14SAndroid Build Coastguard Worker 564*cfb92d14SAndroid Build Coastguard Workerdef create_default_simulator(use_message_factory=True): 565*cfb92d14SAndroid Build Coastguard Worker if VIRTUAL_TIME: 566*cfb92d14SAndroid Build Coastguard Worker return simulator.VirtualTime(use_message_factory=use_message_factory) 567*cfb92d14SAndroid Build Coastguard Worker return simulator.RealTime(use_message_factory=use_message_factory) 568