• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2021-22, The OpenThread Authors.
3  *  All rights reserved.
4  *
5  *  Redistribution and use in source and binary forms, with or without
6  *  modification, are permitted provided that the following conditions are met:
7  *  1. Redistributions of source code must retain the above copyright
8  *     notice, this list of conditions and the following disclaimer.
9  *  2. Redistributions in binary form must reproduce the above copyright
10  *     notice, this list of conditions and the following disclaimer in the
11  *     documentation and/or other materials provided with the distribution.
12  *  3. Neither the name of the copyright holder nor the
13  *     names of its contributors may be used to endorse or promote products
14  *     derived from this software without specific prior written permission.
15  *
16  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  *  POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 /**
30  * @file
31  *   This file includes compile-time configurations for Border Routing Manager.
32  *
33  */
34 
35 #ifndef CONFIG_BORDER_ROUTING_H_
36 #define CONFIG_BORDER_ROUTING_H_
37 
38 /**
39  * @addtogroup config-border-routing
40  *
41  * @brief
42  *   This module includes configuration variables for Border Routing Manager.
43  *
44  * @{
45  *
46  */
47 
48 /**
49  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
50  *
51  * Define to 1 to enable Border Routing Manager feature.
52  *
53  */
54 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
55 #define OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE 0
56 #endif
57 
58 /**
59  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_USE_HEAP_ENABLE
60  *
61  * Define to 1 to allow using heap by Routing Manager.
62  *
63  * When enabled heap allocated entries will be used to track discovered prefix table contain information about
64  * discovered routers and the advertised on-link prefixes on infra link.
65  *
66  * When disabled pre-allocated pools are used instead where max number of entries are specified by
67  * `OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_ROUTERS` and `MAX_DISCOVERED_PREFIXES` configurations.
68  *
69  */
70 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_USE_HEAP_ENABLE
71 #define OPENTHREAD_CONFIG_BORDER_ROUTING_USE_HEAP_ENABLE 1
72 #endif
73 
74 /**
75  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_ROUTERS
76  *
77  * Specifies maximum number of routers (on infra link) to track by routing manager.
78  *
79  * Applicable only when heap allocation is not used, i.e., `OPENTHREAD_CONFIG_BORDER_ROUTING_USE_HEAP_ENABLE` is
80  * disabled.
81  *
82  */
83 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_ROUTERS
84 #define OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_ROUTERS 16
85 #endif
86 
87 /**
88  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_PREFIXES
89  *
90  * Specifies maximum number of discovered prefixes (on-link prefixes on the infra link) maintained by routing manager.
91  *
92  * Applicable only when heap allocation is not used, i.e., `OPENTHREAD_CONFIG_BORDER_ROUTING_USE_HEAP_ENABLE` is
93  * disabled.
94  *
95  */
96 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_PREFIXES
97 #define OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_PREFIXES 64
98 #endif
99 
100 /**
101  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_ON_MESH_PREFIXES
102  *
103  * Specifies maximum number of on-mesh prefixes (discovered from Thread Network Data) that are included as Route Info
104  * Option in emitted Router Advertisement messages.
105  *
106  */
107 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_ON_MESH_PREFIXES
108 #define OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_ON_MESH_PREFIXES 16
109 #endif
110 
111 /**
112  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_OLD_ON_LINK_PREFIXES
113  *
114  * Specifies maximum number of old local on-link prefixes (being deprecated) maintained by routing manager.
115  *
116  */
117 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_OLD_ON_LINK_PREFIXES
118 #define OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_OLD_ON_LINK_PREFIXES 3
119 #endif
120 
121 /**
122  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_ROUTER_ACTIVE_CHECK_TIMEOUT
123  *
124  * Specifies the timeout in msec for a discovered router on infra link side.
125  *
126  * This parameter is related to mechanism to check that a discovered router is still active.
127  *
128  * After this timeout elapses since the last received message (a Router or Neighbor Advertisement) from the router,
129  * routing manager will start sending Neighbor Solidification (NS) probes to the router to check that it is still
130  * active.
131  *
132  * This parameter can be considered to large value to practically disable this behavior.
133  *
134  */
135 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_ROUTER_ACTIVE_CHECK_TIMEOUT
136 #define OPENTHREAD_CONFIG_BORDER_ROUTING_ROUTER_ACTIVE_CHECK_TIMEOUT (60 * 1000) // (in msec).
137 #endif
138 
139 /**
140  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_STUB_ROUTER_FLAG_IN_EMITTED_RA_ENABLE
141  *
142  * Define to 1 so for the routing manager to include the Flags Extension Option with Stub Router flag in the emitted
143  * Router Advertisement messages from this Border Router.
144  *
145  */
146 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_STUB_ROUTER_FLAG_IN_EMITTED_RA_ENABLE
147 #define OPENTHREAD_CONFIG_BORDER_ROUTING_STUB_ROUTER_FLAG_IN_EMITTED_RA_ENABLE 1
148 #endif
149 
150 /**
151  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
152  *
153  * Specifies whether to support handling platform generated ND messages.
154  *
155  * The desired use case is the prefix will be allocated by other software on the interface, and they will advertise the
156  * assigned prefix to the thread interface via router advertisement messages.
157  *
158  */
159 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
160 #define OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE 0
161 #endif
162 
163 /**
164  * @def OPENTHREAD_CONFIG_BORDER_ROUTING_MOCK_PLAT_APIS_ENABLE
165  *
166  * Define to 1 to add mock (empty) implementation of infra-if platform APIs.
167  *
168  * This is intended for generating code size report only and should not be used otherwise.
169  *
170  */
171 #ifndef OPENTHREAD_CONFIG_BORDER_ROUTING_MOCK_PLAT_APIS_ENABLE
172 #define OPENTHREAD_CONFIG_BORDER_ROUTING_MOCK_PLAT_APIS_ENABLE 0
173 #endif
174 
175 /**
176  * @}
177  *
178  */
179 
180 #endif // CONFIG_BORDER_ROUTING_H_
181