xref: /aosp_15_r20/external/openthread/tests/scripts/thread-cert/config.py (revision cfb92d1480a9e65faed56933e9c12405f45898b4)
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