blob: ae89ee34b93a3cf83e26e6cfc2b4781bad5a5438 [file] [log] [blame]
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 |
+--------------+ +-----------+
|//////////////| |///////////|
+--------------+ +-----------+