opaque_lsa.txt 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. 1. List of "opaque-type dependent" callback functions per LSA-type.
  2. <ospf_opaque_lsaN_functab> (N = 9,10,11)
  3. |
  4. | struct
  5. | list struct struct
  6. +-> +-------+ listnode listnode
  7. | head |-----> +------+ +------
  8. | tail | | next |--------------------> | next
  9. | count | /--| prev |<---------------------| prev
  10. +-------+ | data |----+ |
  11. |///////| +------+ |
  12. +-------+ |
  13. |
  14. struct |
  15. ospf_opaque_tabent |
  16. +----------------------+ <--+
  17. | opaque_type |
  18. +----------------------+
  19. | (Callback functions) |
  20. +----------------------+
  21. 2. Self-originated Opaque-LSAs per LSA-type.
  22. 2.1 Type-11 (AS-external) Opaque-LSAs
  23. struct
  24. ospf
  25. +---> +-------------------+
  26. | |///////////////////|
  27. | +-------------------+
  28. | | opaque |
  29. | +-------------------+
  30. | |///////////////////|
  31. | +-------------------+
  32. | | opaque_lsa_self |---+
  33. | +-------------------+ |
  34. | |///////////////////| |
  35. | +-------------------+ |
  36. | |
  37. ......|.............................|.......................................
  38. : | | Almost common for type-9,10,11 LSA :
  39. : | +-----------------------+ :
  40. : | | :
  41. : | | struct :
  42. : | | list struct struct :
  43. : | +-> +-------+ listnode listnode :
  44. : | | head |-----> +------+ +------ :
  45. : | | tail | | next |--------------------> | next :
  46. : | | count | /--| prev |<---------------------| prev :
  47. : | +-------+ | data |---+ | :
  48. : | |///////| +------+ | :
  49. : | +-------+ | :
  50. : | | :
  51. : | struct | :
  52. : | opaque_info_per_type | :
  53. : | +-------------------+ <--------+ :
  54. : | | opaque_type | <------------+ :
  55. : | +-------------------+ | :
  56. : | | status | | :
  57. : | +-------------------+ | :
  58. : | | t_opaque_lsa_self | | :
  59. : | +-------------------+ | :
  60. : +-----| owner | | struct :
  61. : +-------------------+ | ospf_opaque_tabent :
  62. : | functab |-------------------> +---------------- :
  63. : +-------------------+ | | opaque_type :
  64. : | id_list |---+ | |(Callback Funcs) :
  65. : +-------------------+ | | | :
  66. : | | :
  67. : +-----------------------+ | :
  68. : | | :
  69. : | struct | :
  70. : | list struct | struct :
  71. : +-> +-------+ listnode | listnode :
  72. : | head |-----> +------+ | +------ :
  73. : | tail | | next |--------------------> | next :
  74. : | count | /--| prev |<---------------------| prev :
  75. : +-------+ | data |---+ | | :
  76. : |///////| +------+ | | :
  77. : +-------+ | | :
  78. : | | :
  79. : struct | | :
  80. : opaque_info_per_id | | :
  81. : +-------------------+ <--------+ | :
  82. : | opaque_id | | :
  83. : +-------------------+ | :
  84. : | t_opaque_lsa_self | | :
  85. : +-------------------+ | :
  86. : | opqctl_type |--------------+ :
  87. : +-------------------+ :
  88. : | lsa |---+ :
  89. : +-------------------+ | :
  90. : | :
  91. : struct | :
  92. : ospf_lsa | :
  93. : +-------------+ <-------+ :
  94. : |/////////////| struct :
  95. : +-------------+ lsa_header :
  96. : | data |--------------> +-------- :
  97. : +-------------+ | :
  98. : |/////////////| :
  99. : +-------------+ :
  100. : +--------| area | :
  101. : | +-------------+ :
  102. : --- |/////////////| :
  103. : +-------------+ :
  104. : +-----| oi | :
  105. : | +-------------+ :
  106. : --- :
  107. :..........................................................................:
  108. 2.2 Type-10 (area-local) Opaque-LSAs
  109. struct
  110. ospf
  111. +---------+ <-----------+
  112. |/////////| |
  113. +---------+ |
  114. |
  115. struct |
  116. ospf_area |
  117. +--+---> +-----------------+ |
  118. | | | top |-----+
  119. | | +-----------------+
  120. | | |/////////////////| struct
  121. | | +-----------------+ ospf_lsa
  122. | | | router_lsa_self |-----------> +---------
  123. | | +-----------------+ |
  124. | | | opaque_lsa_self |-----+ |
  125. | | +-----------------+ |
  126. | | |/////////////////| |
  127. | | +-----------------+ |
  128. | | |
  129. ...|..|.............................|.......................................
  130. : | | | Almost common for type-9,10,11 LSA :
  131. : | | +-----------------------+ :
  132. : | | | :
  133. : | | | struct :
  134. : | | | list struct struct :
  135. : | | +-> +-------+ listnode listnode :
  136. : | | | head |-----> +------+ +------ :
  137. : | | | tail | | next |--------------------> | next :
  138. : | | | count | /--| prev |<---------------------| prev :
  139. : | | +-------+ | data |---+ | :
  140. : | | |///////| +------+ | :
  141. : | | +-------+ | :
  142. : | | | :
  143. : | | struct | :
  144. : | | opaque_info_per_type | :
  145. : | | +-------------------+ <--------+ :
  146. : | | | opaque_type | <------------+ :
  147. : | | +-------------------+ | :
  148. : | | | status | | :
  149. : | | +-------------------+ | :
  150. : | | | t_opaque_lsa_self | | :
  151. : | | +-------------------+ | :
  152. : | +-----| owner | | struct :
  153. : | +-------------------+ | ospf_opaque_tabent :
  154. : | | functab |-------------------> +---------------- :
  155. : | +-------------------+ | | opaque_type :
  156. : | | id_list |---+ | |(Callback Funcs) :
  157. : | +-------------------+ | | | :
  158. : | | | :
  159. : | +-----------------------+ | :
  160. : | | | :
  161. : | | struct | :
  162. : | | list struct | struct :
  163. : | +-> +-------+ listnode | listnode :
  164. : | | head |-----> +------+ | +------ :
  165. : | | tail | | next |--------------------> | next :
  166. : | | count | /--| prev |<---------------------| prev :
  167. : | +-------+ | data |---+ | | :
  168. : | |///////| +------+ | | :
  169. : | +-------+ | | :
  170. : | | | :
  171. : | struct | | :
  172. : | opaque_info_per_id | | :
  173. : | +-------------------+ <--------+ | :
  174. : | | opaque_id | | :
  175. : | +-------------------+ | :
  176. : | | t_opaque_lsa_self | | :
  177. : | +-------------------+ | :
  178. : | | opqctl_type |--------------+ :
  179. : | +-------------------+ :
  180. : | | lsa |---+ :
  181. : | +-------------------+ | :
  182. : | | :
  183. : | struct | :
  184. : | ospf_lsa | :
  185. : | +-------------+ <-------+ :
  186. : | |/////////////| struct :
  187. : | +-------------+ lsa_header :
  188. : | | data |--------------> +-------- :
  189. : | +-------------+ | :
  190. : | |/////////////| :
  191. : | +-------------+ :
  192. : +--------| area | :
  193. : +-------------+ :
  194. : |/////////////| :
  195. : +-------------+ :
  196. : +-----| oi | :
  197. : | +-------------+ :
  198. : --- :
  199. :..........................................................................:
  200. 2.3 Type-9 (link-local) Opaque-LSAs
  201. struct
  202. ospf_area
  203. +------> +---------+ <---------+
  204. | |/////////| |
  205. | +---------+ |
  206. | |
  207. | struct |
  208. | ospf_interface |
  209. | +-+-> +-----------------+ |
  210. | | | |/////////////////| |
  211. | | | +-----------------+ |
  212. | | | | area |---+
  213. | | | +-----------------+
  214. | | | |/////////////////| struct
  215. | | | +-----------------+ ospf_lsa
  216. | | | |network_lsa_self |-----------> +---------
  217. | | | +-----------------+ |
  218. | | | | opaque_lsa_self |-----+ |
  219. | | | +-----------------+ |
  220. | | | |/////////////////| |
  221. | | | +-----------------+ |
  222. | | | |
  223. ...|..|.|...........................|.......................................
  224. : | | | | Almost common for type-9,10,11 LSA :
  225. : | | | +-----------------------+ :
  226. : | | | | :
  227. : | | | | struct :
  228. : | | | | list struct struct :
  229. : | | | +-> +-------+ listnode listnode :
  230. : | | | | head |-----> +------+ +------ :
  231. : | | | | tail | | next |--------------------> | next :
  232. : | | | | count | /--| prev |<---------------------| prev :
  233. : | | | +-------+ | data |---+ | :
  234. : | | | |///////| +------+ | :
  235. : | | | +-------+ | :
  236. : | | | | :
  237. : | | | struct | :
  238. : | | | opaque_info_per_type | :
  239. : | | | +-------------------+ <--------+ :
  240. : | | | | opaque_type | <------------+ :
  241. : | | | +-------------------+ | :
  242. : | | | | status | | :
  243. : | | | +-------------------+ | :
  244. : | | | | t_opaque_lsa_self | | :
  245. : | | | +-------------------+ | :
  246. : | | +---| owner | | struct :
  247. : | | +-------------------+ | ospf_opaque_tabent :
  248. : | | | functab |-------------------> +---------------- :
  249. : | | +-------------------+ | | opaque_type :
  250. : | | | id_list |---+ | |(Callback Funcs) :
  251. : | | +-------------------+ | | | :
  252. : | | | | :
  253. : | | +-----------------------+ | :
  254. : | | | | :
  255. : | | | struct | :
  256. : | | | list struct | struct :
  257. : | | +-> +-------+ listnode | listnode :
  258. : | | | head |-----> +------+ | +------ :
  259. : | | | tail | | next |--------------------> | next :
  260. : | | | count | /--| prev |<---------------------| prev :
  261. : | | +-------+ | data |---+ | | :
  262. : | | |///////| +------+ | | :
  263. : | | +-------+ | | :
  264. : | | | | :
  265. : | | struct | | :
  266. : | | opaque_info_per_id | | :
  267. : | | +-------------------+ <--------+ | :
  268. : | | | opaque_id | | :
  269. : | | +-------------------+ | :
  270. : | | | t_opaque_lsa_self | | :
  271. : | | +-------------------+ | :
  272. : | | | opqctl_type |--------------+ :
  273. : | | +-------------------+ :
  274. : | | | lsa |---+ :
  275. : | | +-------------------+ | :
  276. : | | | :
  277. : | | struct | :
  278. : | | ospf_lsa | :
  279. : | | +-------------+ <-------+ :
  280. : | | |/////////////| struct :
  281. : | | +-------------+ lsa_header :
  282. : | | | data |--------------> +-------- :
  283. : | | +-------------+ | :
  284. : | | |/////////////| :
  285. : | | +-------------+ :
  286. : +--|-----| area | :
  287. : | +-------------+ :
  288. : | |/////////////| :
  289. : | +-------------+ :
  290. : +-----| oi | :
  291. : +-------------+ :
  292. :..........................................................................:
  293. 3. Internal structures for MPLS-TE parameter management.
  294. struct
  295. ospf_mpls_te
  296. +-------------+
  297. | status |
  298. +-------------+
  299. | iflist |---+
  300. +-------------+ |
  301. |(Router-TLV) | |
  302. +-------------+ |
  303. |
  304. +---------------------+
  305. |
  306. | struct
  307. | list struct struct
  308. +---> +-------+ listnode listnode
  309. | head |-----> +------+ +------
  310. | tail | | next |--------------------> | next
  311. | count | /--| prev |<---------------------| prev
  312. +-------+ | data |---+ |
  313. |///////| +------+ |
  314. +-------+ |
  315. |
  316. +--------------------------------+
  317. |
  318. | struct
  319. | ospf_mpls_te_linkparms
  320. +-> +----------------+
  321. | instance | struct
  322. +----------------+ interface
  323. | ifp |--------------------> +----------+
  324. +----------------+ +----> |//////////|
  325. | area |----+ | +----------+
  326. +----------------+ | | | info |-----+
  327. | flags | | | +----------+ |
  328. +----------------+ | | |//////////| |
  329. | (Link-TLV) | | | +----------+ |
  330. +----------------+ | | |
  331. | (Link-SubTLVs) | | | struct |
  332. +----------------+ | | ospf_if_info |
  333. | | +----------+ <---+
  334. | | |//////////|
  335. struct | | +----------+
  336. ospf_area | | | oifs |-----+
  337. +-> +--------------+ <----+ | +----------+ |
  338. | |//////////////| | |
  339. | +--------------+ | struct |
  340. | | route_table |
  341. | struct | +-----------+ <--+
  342. | ospf_interface | | route_top | - - - - -.
  343. | +--------------+ <----+ | +-----------+ .
  344. | |//////////////| | | .
  345. | +--------------+ | | struct .
  346. | | ifp |------|----------+ route_node .
  347. | +--------------+ | +-----------+ < - - - -
  348. | |//////////////| | |///////////|
  349. | +--------------+ | +-----------+
  350. +---| area | +-----------------| info |
  351. +--------------+ +-----------+
  352. |//////////////| |///////////|
  353. +--------------+ +-----------+