File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / doc / mpls / opaque_lsa.txt
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:26:11 2012 UTC (12 years, 4 months ago) by misho
CVS tags: MAIN, HEAD
Initial revision

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>