e8f73195fa
of various callbacks. Events are just another resource type objects (thus automatically freed and unlinked when the protocol using them shuts down). Each event can be linked in at most one event list. For most purposes, just use the global event list handled by the following functions: ev_schedule Schedule event to be called at the next event scheduling point. If the event was already scheduled, it's just re-linked to the end of the list. ev_postpone Postpone an already scheduled event, so that it won't get called. Postponed events can be scheduled again by ev_schedule(). You can also create custom event lists to build your own synchronization primitives. Just use: ev_init_list to initialize an event list ev_enqueue to schedule event on specified event list ev_postpone works as well for custom lists ev_run_list to run all events on your custom list ev_run to run a specific event and dequeue it
92 lines
2.8 KiB
Text
92 lines
2.8 KiB
Text
Core
|
|
~~~~
|
|
|
|
* right usage of DBG vs. debug
|
|
* cleanup debugging calls
|
|
* logging and tracing; use appropriate log levels
|
|
* check log calls for trailing newlines
|
|
|
|
* Fix router ID calculation
|
|
* debug dump: dump router ID as well
|
|
* proto_report_state() !
|
|
|
|
- TOS not supported by kernel -> automatically drop routes with TOS<>0
|
|
|
|
- fake multipath?
|
|
- replace all NUM's by expr's
|
|
- config file: define ipaddr constants?
|
|
- counters (according to SNMP MIB?)
|
|
- ifdef out some debugging code?
|
|
- better memory allocators
|
|
- default preferences of protocols: prefer BGP over OSPF/RIP external routes?
|
|
- secondary addresses -> subinterfaces
|
|
- check if all protocols set proper packet priorities and TTL's.
|
|
|
|
- better default protocol names
|
|
- config: comments at end of line -> explicit ';' needed?
|
|
- remove post-config hooks?
|
|
- command-line arguments: name of config file
|
|
|
|
- static: check validity of route destination?
|
|
- static: device routes
|
|
|
|
- device: configuration of interface patterns
|
|
|
|
- filter: logging of dropped routes (?)
|
|
- limitation of memory consumption: per-process and total (?)
|
|
- adding of route: check whether all bits not covered by masklen are zero
|
|
- switch: generate default route only if at least one BGP connection exists (?)
|
|
|
|
- route recalculation timing + flap dampening (?)
|
|
|
|
- "generate default route" switch for all IGP's
|
|
|
|
- Check incoming packets and log errors!!
|
|
|
|
|
|
RIP
|
|
~~~
|
|
- RIP: export-only and import-only mode?
|
|
- drop RIPv1 (Historic protocol)?
|
|
- Route Tag
|
|
- limit routing table xfer (frequency, only to neighbors)
|
|
- multicast on/off (per interface)
|
|
- remember routes for all neighbors?
|
|
|
|
OSPF
|
|
~~~~
|
|
- point-to-point interface with address: advertise as stub network
|
|
- static routes: stub networks?
|
|
- modes: PtP, PtP-unnumbered, Broadcast, NBMA, point-to-multipoint
|
|
- importing of device routes for networks where we don't run OSPF
|
|
- tie breaking for equal type 2 ext metrics by using internal (type 1) metric
|
|
- SPF tree recalc timing (per-area timers?)
|
|
- aggregation: specify network list for each area
|
|
- stub area: either no external routes or only default route
|
|
- automatic generation of external route tags (RFC1403)
|
|
|
|
|
|
BGP
|
|
~~~
|
|
- in, local, out RIB
|
|
- maxsize=4096
|
|
- detection of loops
|
|
- aggregation, ATOMIC_AGGREGATE
|
|
- communities
|
|
- confederations
|
|
- attributes must be sorted!
|
|
- re-export of NEXT_HOP attribute
|
|
- BGP session over currently down interface
|
|
- route flap dampening?
|
|
- LOCAL_PREF attribute
|
|
- error notification received -> log error
|
|
- set TTL to 1 (configurable?)
|
|
- consulting IGP for next-hop information? (what if it changes?)
|
|
- inter-advertisement delay???!
|
|
- normalize (sort) incoming AS-SET's
|
|
- maximum length of AS paths
|
|
|
|
- expected neighbor AS
|
|
- hold time
|
|
- idle timer after error: initial value, exponential growth, maximum value
|
|
- import of IGP routes (use external route tags from OSPF)
|