1. List of "opaque-type dependent" callback functions per LSA-type. (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 | +--------------+ +-----------+ |//////////////| |///////////| +--------------+ +-----------+