Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

182 lines
6.0 KiB

  1. Do I have to validate the state of dest in RtmGetOpaquePtr ??
  2. 5)
  3. Give opaque ptr instead of handle to the entity method.
  4. 7) In RtmAddNextHop, do u need to do the NextHopHandle validation after
  5. taking the Entity's Next Hop Lock ? Otherwise we might potentially
  6. update a next-hop that has been deleted (which might be OK as you
  7. are not updating the state , and you have a ref count on the nexthop)
  8. 8) To work on a next hop directly, the next hop owner can keep a pointer,
  9. but he still needs to keep a handle around to be able to delete it ???
  10. 9) What about delete all next-hops in one stroke if nexthophandle == null
  11. in RtmDelNextHop ?
  12. Just keep direct RTM_NEXTHOP_INFO * in the next hop list, but
  13. give out handles
  14. What if a call has handles from two diff address families/instances ... ?
  15. Holddown protocol ? Do I keep track of it the registration ?
  16. - Affects GetDestInfo - do u give holddown route
  17. Affects GetEnumDests, GetEnumRoutes - do u give helddown routes ..?
  18. Do we need a state in the next-hop (that we understand) ?
  19. If u expose RtmLockNextHop and RtmLockRoute, the caller has to be aware
  20. of the locking mechanism ? Like the granularity of locking etc. ?
  21. Improve EnumOverTable to take into account StopContext ??
  22. and
  23. Have macros to initialize the space for EnumContext.
  24. and
  25. Improve AdjustPrefixes to intelligently use StopContext instead
  26. of getting everything and doung a PartialMatch....
  27. Implement MAKE_DEST_INFO_FROM_DEST and also make GetDestInfo go through that.
  28. Incorporate dave's preference comparision (BGP multi-byte preference)
  29. How does this affect matching a specific pref ?
  30. When u delete a dest from the tree , make sure that u are not in a state
  31. when ref on dest has gone to zero and it is still in the tree. Does not
  32. work well with RtmGetExactMatchRoute as u potentially might be trying to
  33. ref dest with a ref count of zero. PS each held-down route also contribs
  34. to ref count here.
  35. How come DEST does have a state and we do check for deleted ....
  36. in VALIDATE_DEST_HANDLE //// ****
  37. Shift all error processing related to rtm route info from RtmNewRoute
  38. to CreateRoute like views parameter checking etc.
  39. Have a function to Get all routes that match a certain criteria ?
  40. For example, RIP want to query all its routes for the route handle
  41. to pass in update (it wants to get a route learnt from a certain
  42. neighbour which is part of the opaque info block).
  43. How do u know whether update route has been called after lockroute or not ?
  44. See if can optimize NewRoute and NewNextHop to use CopyMemory instead of
  45. copying field by field ?
  46. Use a dynamic lock in dest instead of allocating a new lock ???
  47. Do I need to ref a entity when a route is added (or) can I manage it by
  48. keeping refs on the next hop (indirect reln) - Answer is a route guaranteed
  49. to have atleast one nexthop at all times ????
  50. UPDATE BelongsToViews in RtmDelRoute
  51. Make sure you have a model from updating routes (and nexthops) in place
  52. without having to copy stuff out.
  53. Do we update the holddown route only for the last route deletion ? Or
  54. for every best route change ? If u already have a holddown route (do
  55. u change the holddown period for the old route), or do u update the
  56. holddown ? The later defeats the purpose of holddown anyway.
  57. Semantics of Ignore dests ? Do u ignore even if we have no changes at
  58. ignore time ?
  59. See if u are reinitializing after allocating and zerong block ?
  60. We are processing the change list with a lock preventing all others
  61. from adding to the list ?
  62. Does putting in the entity list lead to having a ref count ?
  63. Serializing the operations on entity lists by keeping lock on entity ?
  64. Do we need a read/write lock on the addr family change notifications block ?
  65. Include TRACING statements in RTM >>
  66. Check status code of Rtl
  67. What will happen if we call ProcessChangedDestsList and kill timer
  68. from outisde a timer func ?
  69. Decide on whether u want to have a Interlocked op to make sure that
  70. only one ProcessChangedDests happens at a time ??
  71. Make sure that the caller entity does not de-register while you
  72. give callbacks to him (route aged out callbacks etc). ????
  73. Do u validate an entity handle to see if the de-registration has not
  74. come up or not ?
  75. GetInstanceInfo and GetInstances should return supported address families
  76. in an array ?
  77. Make sure u delete all routes in the RTMv1 wrapper de-registration
  78. GET UR ****ing DE-REGISTER STRATEGY RIGHT ? What happens if he deregisters
  79. twice ? What about sync between a non-deregister and a de-register ???
  80. -----Wrappper ------------------------------------------------------------
  81. Do we ignore the VALIDATE and ROUTE_CHANGE callbacks to router manager ?
  82. [ in RTMCreateRouteTable ]
  83. RTM_ROUTE_CHANGE_BEST will be true even if the best route remained the same
  84. but the best route's forwarding information changed ????
  85. In the wrapper, what will happen if DeleteRouteTable happens before other
  86. RTM calls (or during) ? Similarly with Deregister etc.
  87. ------For Later -----------------------------------------------------------
  88. ComparePref in NT-64
  89. {
  90. if (*(ULONGLONG *)Pref1 > *(ULONGLONG *)Pref2)
  91. {
  92. return +1;
  93. }
  94. else
  95. if (*(ULONGLONG *)Pref1 < *(ULONGLONG *)Pref2)
  96. {
  97. return -1;
  98. }
  99. return 0;
  100. }
  101. ---------------------------------------------------------------------------
  102. Make sure you stop the timers (CN timer) on the address family before
  103. you DestroyAddressFamily (as they access AF locks...)
  104. Make the distinction between counted type (ULONG) and bit-type (DWORD)
  105. Do we put a route in hold if it is not the last route to the dest ????
  106. Hold ref in each view .... (RIP and DVMRP putting same dest in holddown)
  107. What about DestFlags (do we need it per view - who sets it ...)
  108. ---------------------------------------------------------------------------
  109. Perf Improvements
  110. ---------------------------------------------------------------------------
  111. Lookaside lists for common allocations for better locality ??