summaryrefslogtreecommitdiffstats
path: root/doc/mpls/opaque_lsa.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/mpls/opaque_lsa.txt')
-rw-r--r--doc/mpls/opaque_lsa.txt365
1 files changed, 365 insertions, 0 deletions
diff --git a/doc/mpls/opaque_lsa.txt b/doc/mpls/opaque_lsa.txt
new file mode 100644
index 0000000..ae89ee3
--- /dev/null
+++ b/doc/mpls/opaque_lsa.txt
@@ -0,0 +1,365 @@
+1. List of "opaque-type dependent" callback functions per LSA-type.
+
+ <ospf_opaque_lsaN_functab> (N = 9,10,11)
+ |
+ | struct
+ | list struct struct
+ +-> +-------+ listnode listnode
+ | head |-----> +------+ +------
+ | tail | | next |--------------------> | next
+ | count | /--| prev |<---------------------| prev
+ +-------+ | data |----+ |
+ |///////| +------+ |
+ +-------+ |
+ |
+ struct |
+ ospf_opaque_tabent |
+ +----------------------+ <--+
+ | opaque_type |
+ +----------------------+
+ | (Callback functions) |
+ +----------------------+
+
+
+2. Self-originated Opaque-LSAs per LSA-type.
+
+2.1 Type-11 (AS-external) Opaque-LSAs
+
+ struct
+ ospf
+ +---> +-------------------+
+ | |///////////////////|
+ | +-------------------+
+ | | opaque |
+ | +-------------------+
+ | |///////////////////|
+ | +-------------------+
+ | | opaque_lsa_self |---+
+ | +-------------------+ |
+ | |///////////////////| |
+ | +-------------------+ |
+ | |
+ ......|.............................|.......................................
+ : | | Almost common for type-9,10,11 LSA :
+ : | +-----------------------+ :
+ : | | :
+ : | | struct :
+ : | | list struct struct :
+ : | +-> +-------+ listnode listnode :
+ : | | head |-----> +------+ +------ :
+ : | | tail | | next |--------------------> | next :
+ : | | count | /--| prev |<---------------------| prev :
+ : | +-------+ | data |---+ | :
+ : | |///////| +------+ | :
+ : | +-------+ | :
+ : | | :
+ : | struct | :
+ : | opaque_info_per_type | :
+ : | +-------------------+ <--------+ :
+ : | | opaque_type | <------------+ :
+ : | +-------------------+ | :
+ : | | status | | :
+ : | +-------------------+ | :
+ : | | t_opaque_lsa_self | | :
+ : | +-------------------+ | :
+ : +-----| owner | | struct :
+ : +-------------------+ | ospf_opaque_tabent :
+ : | functab |-------------------> +---------------- :
+ : +-------------------+ | | opaque_type :
+ : | id_list |---+ | |(Callback Funcs) :
+ : +-------------------+ | | | :
+ : | | :
+ : +-----------------------+ | :
+ : | | :
+ : | struct | :
+ : | list struct | struct :
+ : +-> +-------+ listnode | listnode :
+ : | head |-----> +------+ | +------ :
+ : | tail | | next |--------------------> | next :
+ : | count | /--| prev |<---------------------| prev :
+ : +-------+ | data |---+ | | :
+ : |///////| +------+ | | :
+ : +-------+ | | :
+ : | | :
+ : struct | | :
+ : opaque_info_per_id | | :
+ : +-------------------+ <--------+ | :
+ : | opaque_id | | :
+ : +-------------------+ | :
+ : | t_opaque_lsa_self | | :
+ : +-------------------+ | :
+ : | opqctl_type |--------------+ :
+ : +-------------------+ :
+ : | lsa |---+ :
+ : +-------------------+ | :
+ : | :
+ : struct | :
+ : ospf_lsa | :
+ : +-------------+ <-------+ :
+ : |/////////////| struct :
+ : +-------------+ lsa_header :
+ : | data |--------------> +-------- :
+ : +-------------+ | :
+ : |/////////////| :
+ : +-------------+ :
+ : +--------| area | :
+ : | +-------------+ :
+ : --- |/////////////| :
+ : +-------------+ :
+ : +-----| oi | :
+ : | +-------------+ :
+ : --- :
+ :..........................................................................:
+
+2.2 Type-10 (area-local) Opaque-LSAs
+
+ struct
+ ospf
+ +---------+ <-----------+
+ |/////////| |
+ +---------+ |
+ |
+ struct |
+ ospf_area |
+ +--+---> +-----------------+ |
+ | | | top |-----+
+ | | +-----------------+
+ | | |/////////////////| struct
+ | | +-----------------+ ospf_lsa
+ | | | router_lsa_self |-----------> +---------
+ | | +-----------------+ |
+ | | | opaque_lsa_self |-----+ |
+ | | +-----------------+ |
+ | | |/////////////////| |
+ | | +-----------------+ |
+ | | |
+ ...|..|.............................|.......................................
+ : | | | Almost common for type-9,10,11 LSA :
+ : | | +-----------------------+ :
+ : | | | :
+ : | | | struct :
+ : | | | list struct struct :
+ : | | +-> +-------+ listnode listnode :
+ : | | | head |-----> +------+ +------ :
+ : | | | tail | | next |--------------------> | next :
+ : | | | count | /--| prev |<---------------------| prev :
+ : | | +-------+ | data |---+ | :
+ : | | |///////| +------+ | :
+ : | | +-------+ | :
+ : | | | :
+ : | | struct | :
+ : | | opaque_info_per_type | :
+ : | | +-------------------+ <--------+ :
+ : | | | opaque_type | <------------+ :
+ : | | +-------------------+ | :
+ : | | | status | | :
+ : | | +-------------------+ | :
+ : | | | t_opaque_lsa_self | | :
+ : | | +-------------------+ | :
+ : | +-----| owner | | struct :
+ : | +-------------------+ | ospf_opaque_tabent :
+ : | | functab |-------------------> +---------------- :
+ : | +-------------------+ | | opaque_type :
+ : | | id_list |---+ | |(Callback Funcs) :
+ : | +-------------------+ | | | :
+ : | | | :
+ : | +-----------------------+ | :
+ : | | | :
+ : | | struct | :
+ : | | list struct | struct :
+ : | +-> +-------+ listnode | listnode :
+ : | | head |-----> +------+ | +------ :
+ : | | tail | | next |--------------------> | next :
+ : | | count | /--| prev |<---------------------| prev :
+ : | +-------+ | data |---+ | | :
+ : | |///////| +------+ | | :
+ : | +-------+ | | :
+ : | | | :
+ : | struct | | :
+ : | opaque_info_per_id | | :
+ : | +-------------------+ <--------+ | :
+ : | | opaque_id | | :
+ : | +-------------------+ | :
+ : | | t_opaque_lsa_self | | :
+ : | +-------------------+ | :
+ : | | opqctl_type |--------------+ :
+ : | +-------------------+ :
+ : | | lsa |---+ :
+ : | +-------------------+ | :
+ : | | :
+ : | struct | :
+ : | ospf_lsa | :
+ : | +-------------+ <-------+ :
+ : | |/////////////| struct :
+ : | +-------------+ lsa_header :
+ : | | data |--------------> +-------- :
+ : | +-------------+ | :
+ : | |/////////////| :
+ : | +-------------+ :
+ : +--------| area | :
+ : +-------------+ :
+ : |/////////////| :
+ : +-------------+ :
+ : +-----| oi | :
+ : | +-------------+ :
+ : --- :
+ :..........................................................................:
+
+2.3 Type-9 (link-local) Opaque-LSAs
+
+ struct
+ ospf_area
+ +------> +---------+ <---------+
+ | |/////////| |
+ | +---------+ |
+ | |
+ | struct |
+ | ospf_interface |
+ | +-+-> +-----------------+ |
+ | | | |/////////////////| |
+ | | | +-----------------+ |
+ | | | | area |---+
+ | | | +-----------------+
+ | | | |/////////////////| struct
+ | | | +-----------------+ ospf_lsa
+ | | | |network_lsa_self |-----------> +---------
+ | | | +-----------------+ |
+ | | | | opaque_lsa_self |-----+ |
+ | | | +-----------------+ |
+ | | | |/////////////////| |
+ | | | +-----------------+ |
+ | | | |
+ ...|..|.|...........................|.......................................
+ : | | | | Almost common for type-9,10,11 LSA :
+ : | | | +-----------------------+ :
+ : | | | | :
+ : | | | | struct :
+ : | | | | list struct struct :
+ : | | | +-> +-------+ listnode listnode :
+ : | | | | head |-----> +------+ +------ :
+ : | | | | tail | | next |--------------------> | next :
+ : | | | | count | /--| prev |<---------------------| prev :
+ : | | | +-------+ | data |---+ | :
+ : | | | |///////| +------+ | :
+ : | | | +-------+ | :
+ : | | | | :
+ : | | | struct | :
+ : | | | opaque_info_per_type | :
+ : | | | +-------------------+ <--------+ :
+ : | | | | opaque_type | <------------+ :
+ : | | | +-------------------+ | :
+ : | | | | status | | :
+ : | | | +-------------------+ | :
+ : | | | | t_opaque_lsa_self | | :
+ : | | | +-------------------+ | :
+ : | | +---| owner | | struct :
+ : | | +-------------------+ | ospf_opaque_tabent :
+ : | | | functab |-------------------> +---------------- :
+ : | | +-------------------+ | | opaque_type :
+ : | | | id_list |---+ | |(Callback Funcs) :
+ : | | +-------------------+ | | | :
+ : | | | | :
+ : | | +-----------------------+ | :
+ : | | | | :
+ : | | | struct | :
+ : | | | list struct | struct :
+ : | | +-> +-------+ listnode | listnode :
+ : | | | head |-----> +------+ | +------ :
+ : | | | tail | | next |--------------------> | next :
+ : | | | count | /--| prev |<---------------------| prev :
+ : | | +-------+ | data |---+ | | :
+ : | | |///////| +------+ | | :
+ : | | +-------+ | | :
+ : | | | | :
+ : | | struct | | :
+ : | | opaque_info_per_id | | :
+ : | | +-------------------+ <--------+ | :
+ : | | | opaque_id | | :
+ : | | +-------------------+ | :
+ : | | | t_opaque_lsa_self | | :
+ : | | +-------------------+ | :
+ : | | | opqctl_type |--------------+ :
+ : | | +-------------------+ :
+ : | | | lsa |---+ :
+ : | | +-------------------+ | :
+ : | | | :
+ : | | struct | :
+ : | | ospf_lsa | :
+ : | | +-------------+ <-------+ :
+ : | | |/////////////| struct :
+ : | | +-------------+ lsa_header :
+ : | | | data |--------------> +-------- :
+ : | | +-------------+ | :
+ : | | |/////////////| :
+ : | | +-------------+ :
+ : +--|-----| area | :
+ : | +-------------+ :
+ : | |/////////////| :
+ : | +-------------+ :
+ : +-----| oi | :
+ : +-------------+ :
+ :..........................................................................:
+
+
+3. Internal structures for MPLS-TE parameter management.
+
+ struct
+ ospf_mpls_te
+ +-------------+
+ | status |
+ +-------------+
+ | iflist |---+
+ +-------------+ |
+ |(Router-TLV) | |
+ +-------------+ |
+ |
+ +---------------------+
+ |
+ | struct
+ | list struct struct
+ +---> +-------+ listnode listnode
+ | head |-----> +------+ +------
+ | tail | | next |--------------------> | next
+ | count | /--| prev |<---------------------| prev
+ +-------+ | data |---+ |
+ |///////| +------+ |
+ +-------+ |
+ |
+ +--------------------------------+
+ |
+ | struct
+ | ospf_mpls_te_linkparms
+ +-> +----------------+
+ | instance | struct
+ +----------------+ interface
+ | ifp |--------------------> +----------+
+ +----------------+ +----> |//////////|
+ | area |----+ | +----------+
+ +----------------+ | | | info |-----+
+ | flags | | | +----------+ |
+ +----------------+ | | |//////////| |
+ | (Link-TLV) | | | +----------+ |
+ +----------------+ | | |
+ | (Link-SubTLVs) | | | struct |
+ +----------------+ | | ospf_if_info |
+ | | +----------+ <---+
+ | | |//////////|
+ struct | | +----------+
+ ospf_area | | | oifs |-----+
+ +-> +--------------+ <----+ | +----------+ |
+ | |//////////////| | |
+ | +--------------+ | struct |
+ | | route_table |
+ | struct | +-----------+ <--+
+ | ospf_interface | | route_top | - - - - -.
+ | +--------------+ <----+ | +-----------+ .
+ | |//////////////| | | .
+ | +--------------+ | | struct .
+ | | ifp |------|----------+ route_node .
+ | +--------------+ | +-----------+ < - - - -
+ | |//////////////| | |///////////|
+ | +--------------+ | +-----------+
+ +---| area | +-----------------| info |
+ +--------------+ +-----------+
+ |//////////////| |///////////|
+ +--------------+ +-----------+