| 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 | |
| +--------------+ +-----------+ |
| |//////////////| |///////////| |
| +--------------+ +-----------+ |