[Xorp-users] Re: help establishing OSPF adjacencies

Atanu Ghosh atanu@ICSI.Berkeley.EDU
Mon, 31 Oct 2005 18:50:16 -0800


The next thing to check is that protocol_map.{cc,hh} are in the
generated Makefile, if they aren't you need to rerun configure.

      Atanu.

>>>>> "Nick" == Nick Feamster <feamster@lcs.mit.edu> writes:

    Nick> Yes, I do.  Here is the md5 of that file in my current tree:
    Nick> #md5sum protocol_map.hh 4a823174a886b441d8260caab2953d59
    Nick> protocol_map.hh

    Nick> On Mon, Oct 31, 2005 at 04:41:59PM -0800, Atanu Ghosh wrote:
    >> Hi,
    >> 
    >> We run regression tests on a variety of platforms every night and
    >> we haven't seen a compilation or test failure for a while.
    >> 
    >> The data structure that seems to be causing the problem
    >> ProtocolMap was introduced 8 days ago and is in
    >> xorp/policy/protocol_map.hh. Do you have this file in your source
    >> tree?
    >> 
    >> Atanu.
    >> 
    >> >>>>> "Nick" == Nick Feamster <feamster@lcs.mit.edu> writes:
    >> 
    Nick> Atanu, The latest code does not compile (I have been having
    Nick> this error for a few days now, but didn't get around to
    Nick> sending this until now...figured maybe I had a mid-update
    Nick> version, but it appears not).
    >>
    Nick> thanks, -Nick
    >>
    Nick> g++ -g -W -Wall -Wwrite-strings -Wcast-qual -Werror
    Nick> -Wpointer-arith -Wcast-alig\ n -Wstrict-prototypes
    Nick> -Woverloaded-virtual -ftemplate-depth-25 -pipe -o xorp_po\
    Nick> licy xorp_policy.o policy_target.o ./.libs/libpolicy.a
    Nick> ./common/.libs/libpolic\ ycommon.a
    Nick> ../xrl/targets/.libs/libpolicybase.a
    Nick> ../xrl/interfaces/.libs/libpolic\ ybackendxif.a
    Nick> ../xrl/interfaces/.libs/libfindereventnotifierxif.a
    Nick> ../xrl/interf\ aces/.libs/libribxif.a
    Nick> ../libxipc/.libs/libxipc.a ../libcomm/.libs/libcomm.a ..\
    Nick> /libxorp/.libs/libxorp.a -lcrypto policy_target.o(.text+0x22):
    Nick> In function `PolicyTarget::PolicyTarget[not-in-cha\
    Nick> rge](XrlStdRouter&)': /usr/include/c++/3.3.3/bits/list.tcc:76:
    Nick> undefined reference to `ProtocolMap::P\
    Nick> rotocolMap[in-charge]()' policy_target.o(.text+0x1c0): In
    Nick> function `PolicyTarget::PolicyTarget[in-charge\
    Nick> ](XrlStdRouter&)':
    Nick> /home/feamster/xorp/policy/policy_target.cc:42: undefined
    Nick> reference to `Protoco\ lMap::ProtocolMap[in-charge]()'
    Nick> policy_target.o(.text+0x6cf): In function
    Nick> `PolicyTarget::set_proto_target(std::\ basic_string<char,
    Nick> std::char_traits<char>, std::allocator<char> > const&, std::\
    Nick> basic_string<char, std::char_traits<char>,
    Nick> std::allocator<char> > const&)':
    Nick> /home/feamster/xorp/policy/policy_target.cc:178: undefined
    Nick> reference to `Protoc\
    Nick> olMap::set_xrl_target(std::basic_string<char,
    Nick> std::char_traits<char>, std::allo\ cator<char> > const&,
    Nick> std::basic_string<char, std::char_traits<char>, std::allo\
    Nick> cator<char> > const&)'
    Nick> ./.libs/libpolicy.a(filter_manager.o)(.text+0x763): In
    Nick> function `FilterManager:\
    Nick> :update_tagmap(std::basic_string<char, std::char_traits<char>,
    Nick> std::allocator<c\
    har> > const&)':
    Nick> /home/feamster/xorp/policy/filter_manager.cc:109: undefined
    Nick> reference to `Proto\
    Nick> colMap::xrl_target(std::basic_string<char,
    Nick> std::char_traits<char>, std::allocat\ or<char> > const&)'
    Nick> ./.libs/libpolicy.a(filter_manager.o)(.text+0x975): In
    Nick> function `FilterManager:\ :flush_export_queue()':
    Nick> /home/feamster/xorp/policy/filter_manager.cc:140: undefined
    Nick> reference to `Proto\
    Nick> colMap::xrl_target(std::basic_string<char,
    Nick> std::char_traits<char>, std::allocat\ or<char> > const&)'
    Nick> ./.libs/libpolicy.a(filter_manager.o)(.text+0xa0e):/home/feamster/xorp/policy/f\
    Nick> ilter_manager.cc:145: undefined reference to
    Nick> `ProtocolMap::xrl_target(std::basi\ c_string<char,
    Nick> std::char_traits<char>, std::allocator<char> > const&)'
    Nick> ./.libs/libpolicy.a(filter_manager.o)(.text+0xb72): In
    Nick> function `FilterManager:\
    Nick> :flush_queue(std::map<std::basic_string<char,
    Nick> std::char_traits<char>, std::allo\ cator<char> >,
    Nick> std::basic_string<char, std::char_traits<char>,
    Nick> std::allocator<c\
    har> >, std::less<std::basic_string<char, std::char_traits<char>,
    Nick> std::allocato\ r<char> > >,
    Nick> std::allocator<std::pair<std::basic_string<char,
    Nick> std::char_traits<\
    char> , std::allocator<char> > const, std::basic_string<char,
    Nick> std::char_traits<c\
    har> , std::allocator<char> > > > >&, filter::Filter)':
    Nick> /home/feamster/xorp/policy/filter_manager.cc:176: undefined
    Nick> reference to `Proto\
    Nick> colMap::xrl_target(std::basic_string<char,
    Nick> std::char_traits<char>, std::allocat\ or<char> > const&)'
    Nick> ./.libs/libpolicy.a(filter_manager.o)(.text+0xc0a):/home/feamster/xorp/policy/f\
    Nick> ilter_manager.cc:181: undefined reference to
    Nick> `ProtocolMap::xrl_target(std::basi\ c_string<char,
    Nick> std::char_traits<char>, std::allocator<char> > const&)'
    Nick> ./.libs/libpolicy.a(filter_manager.o)(.text+0xd2e):/home/feamster/xorp/policy/f\
    Nick> ilter_manager.cc:205: more undefined references to
    Nick> `ProtocolMap::xrl_target(std\ ::basic_string<char,
    Nick> std::char_traits<char>, std::allocator<char> > const&)' fo\
    Nick> llow ./.libs/libpolicy.a(process_watch.o)(.text+0x4cd): In
    Nick> function `ProcessWatch::b\ irth(std::basic_string<char,
    Nick> std::char_traits<char>, std::allocator<char> > con\ st&)':
    Nick> /home/feamster/xorp/policy/process_watch.cc:67: undefined
    Nick> reference to `Protoco\ lMap::protocol(std::basic_string<char,
    Nick> std::char_traits<char>, std::allocator<c\
    har> > const&)'
    Nick> ./.libs/libpolicy.a(process_watch.o)(.text+0x52d): In function
    Nick> `ProcessWatch::d\ eath(std::basic_string<char,
    Nick> std::char_traits<char>, std::allocator<char> > con\ st&)':
    Nick> /home/feamster/xorp/policy/process_watch.cc:79: undefined
    Nick> reference to `Protoco\ lMap::protocol(std::basic_string<char,
    Nick> std::char_traits<char>, std::allocator<c\
    har> > const&)'
    Nick> collect2: ld returned 1 exit status
    >>
    Nick> On Sat, Oct 29, 2005 at 01:07:50AM -0700, Atanu Ghosh wrote:
    >> >> Hi,
    >> >> 
    >> >> I don't think that you have the latest code, I still see an >>
    >> Assertion in the trace (Assertion (do_dr_or_bdr()) failed).
    >> >> 
    >> >> Atanu.
    >> >> 
    >> >> >>>>> "Nick" == Nick Feamster <feamster@lcs.mit.edu> writes:
    >> >> 
    Nick> Spoke a bit too soon.  I'm still getting these error logs on
    Nick> p4: [ 2005/10/29 00:10:27 TRACE xorp_ospfv2 OSPF ]
    Nick> Event(DataDescriptionReceived-pse udo-event)
    Nick> Interface(eth0/eth0) Neighbour(128.31.1.15) State(ExStart) [
    Nick> 2005/10/29 00:10:27 TRACE xorp_ospfv2 OSPF ]
    Nick> Event(NegotiationDone) Interface( eth0/eth0)
    Nick> Neighbour(128.31.1.15) State(ExStart) [ 2005/10/29 00:10:27
    Nick> TRACE xorp_ospfv2 OSPF ] Event(DataDescriptionReceived-pse
    Nick> udo-event) Interface(eth0/eth0) Neighbour(128.31.1.15)
    Nick> State(Exchange) [ 2005/10/29 00:10:27 TRACE xorp_ospfv2 OSPF ]
    Nick> Event(ExchangeDone) Interface(eth 0/eth0)
    Nick> Neighbour(128.31.1.15) State(Exchange) [ 2005/10/29 00:10:27
    Nick> TRACE xorp_ospfv2 OSPF ] Event(LinkStateUpdateReceived-pse
    Nick> udo-event) Interface(eth0/eth0) Neighbour(128.31.1.13)
    Nick> State(Loading) [ 2005/10/29 00:10:27 TRACE xorp_ospfv2 OSPF ]
    Nick> Event(LoadingDone) Interface(eth0 /eth0)
    Nick> Neighbour(128.31.1.13) State(Loading) [ 2005/10/29 00:10:27
    Nick> FATAL xorp_ospfv2:2866 OSPF +914 peer.cc is_neighbour_DR_
    Nick> or_BDR ] Assertion (do_dr_or_bdr()) failed [ 2005/10/29
    Nick> 00:10:37 ERROR xorp_fea:2175 FEA +433
    Nick> fticonfig_entry_set_click.cc delete_entry ] User-level Click
    Nick> command error: 520-Write handler '_xorp_rt4.rem ove' error:
    Nick> 520 route '10.0.1.0/24 - -1' not found [ 2005/10/29 00:10:37
    Nick> ERROR xorp_fea:2175 FEA +71 fti_transaction.cc operation_
    Nick> result ] FTI transaction commit failed on DeleteEntry4: net =
    Nick> 10.0.1.0/24 nextho p = 0.0.0.0 ifname = vifname = metric = 0
    Nick> admin_distance = 0 xorp_route = fals e is_deleted = false
    Nick> is_unresolved = false is_connected_route = false [ 2005/10/29
    Nick> 00:10:37 ERROR xorp_fea:2175 FEA +433
    Nick> fticonfig_entry_set_click.cc delete_entry ] User-level Click
    Nick> command error: 520-Write handler '_xorp_rt4.rem ove' error:
    Nick> 520 route '10.0.2.0/24 - -1' not found [ 2005/10/29 00:10:37
    Nick> ERROR xorp_fea:2175 FEA +433 fticonfig_entry_set_click.cc
    Nick> delete_entry ] User-level Click command error: 520-Write
    Nick> handler '_xorp_rt4.rem ove' error: 520 route '10.0.3.0/24 -
    Nick> -1' not found [ 2005/10/29 00:10:37 WARNING xorp_fea
    Nick> XrlFeaTarget ] Handling method for redist
    Nick> _transaction4/0.1/commit_transaction failed: XrlCmdError 102
    Nick> Command failed Dele teEntry4: net = 10.0.1.0/24 nexthop =
    Nick> 0.0.0.0 ifname = vifname = metric = 0 ad min_distance = 0
    Nick> xorp_route = false is_deleted = false is_unresolved = false
    Nick> is_ connected_route = false
    >> >>
    Nick> On Fri, Oct 21, 2005 at 02:53:59AM -0700, Atanu Ghosh wrote:
    >> >> >> >>>>> "Nick" == Nick Feamster <feamster@lcs.mit.edu>
    >> writes:
    >> >> >> 
    Nick> On Wed, Oct 19, 2005 at 03:27:03PM -0700, Atanu Ghosh wrote:
    >> >> >> >> of the routers neighbours are the designated router or
    >> >> backup >> >> designated router. This method should only be
    >> called >> if the >> the >> link type is Broadcast or NBMA, as
    >> these are the >> only link >> types >> that perform DR
    >> election. I assume that the >> link-type is >> set to >>
    >> point-to-multipoint (p2m), in when case >> the assert is >>
    >> signalling >> a programming error. The OSPF >> process will have
    >> >> exited. A stack >> backtrace might yield >> some clues.
    >> >> >> 
    Nick> Yes, the link-type is p2m in our case, so perhaps this method
    Nick> should not be called?  It appears that the OSPF process dies
    Nick> completely as a result.  Sure, I will send along a backtrace.
    >> >> >> This problem is now fixed in CVS.
    >> >> >> 
    >> >> >> >> If the problem is reproducible with the latest code from
    >> >> CVS >> then >> the configuration files and some information
    >> about >> the >> topology >> would be useful.
    >> >> >> 
    Nick> Simple topology:
    >> >> >>
    Nick> A <-> B <-> C, where both links are p2m links.  I've attached
    Nick> the configuration files.
    >> >> >> I'v included a cut down configuration files that worked for
    >> >> >> me. I had to modify the prefix length from 32 to 24 on the
    >> first >> >> router. Also you shouldn't be setting discard to true
    >> on >> >> interfaces that you want to route traffic through.
    >> >> >> 
    >> >> >> >> If an attempt was made to add a route to the RIB and it
    >> >> failed >> >> you should error messages in the log.
    >> >> >> 
    Nick> How do I ensure that routes are in the RIB, then?  Here's what
    Nick> I see in the log.
    >> >> >> Use the show route command:
    Xorp> show route table ipv4 unicast ospf
    >> >> >> Network 128.31.1.15/32 Nexthop := 128.31.1.14 Metric := 10
    >> >> >> Protocol := ospf Interface := eth0 Vif := eth0
    >> >> >> 
    >> >> >> To see the final table:
    Xorp> show route table ipv4 unicast final
    >> >> >> Network 128.31.1.0/24 Nexthop := 128.31.1.13 Metric := 0 >>
    >> Protocol >> := connected Interface := eth0 Vif := eth0 Network >>
    >> 128.31.1.15/32 >> Nexthop := 128.31.1.14 Metric := 10 Protocol :=
    >> >> ospf Interface := >> eth0 Vif := eth0
    >> >> >> 
    >> >> >> Atanu.
    >> >> >> 
    >> >> 
    Nick> Content-Description: p3
    >> >> >> interfaces { interface eth0 { vif eth0 { address
    >> 128.31.1.13 { >> >> prefix-length: 24 } } } } protocols { ospf4 {
    >> router-id: >> >> 128.31.1.13
    >> >> >> 
    >> >> >> area 0.0.0.0 { interface eth0 { link-type: "p2m" vif eth0 {
    >> >> >> address 128.31.1.13 { interface-cost: 5 neighbour
    >> 128.31.1.14 { >> >> router-id: 128.31.1.14 } } } } } } } }
    >> >> 
    Nick> Content-Description: p4
    >> >> >> interfaces { interface eth0 { vif eth0 { address
    >> 128.31.1.14 { >> >> prefix-length: 24 } } } } protocols { ospf4 {
    >> router-id: >> >> 128.31.1.14
    >> >> >> 
    >> >> >> area 0.0.0.0 { interface eth0 { link-type: "p2m" vif eth0 {
    >> >> >> address 128.31.1.14 { interface-cost: 5 neighbour
    >> 128.31.1.13 { >> >> router-id: 128.31.1.13 } neighbour
    >> 128.31.1.15 { router-id: >> >> 128.31.1.15 } } } } } } } }
    >> >> 
    Nick> Content-Description: p5
    >> >> >> interfaces { interface eth0 { vif eth0 { address
    >> 128.31.1.15 { >> >> prefix-length: 24 } } } } protocols { ospf4 {
    >> router-id: >> >> 128.31.1.15
    >> >> >> 
    >> >> >> area 0.0.0.0 { interface eth0 { link-type: "p2m" vif eth0 {
    >> >> >> address 128.31.1.15 { interface-cost: 5 neighbour
    >> 128.31.1.13 { >> >> router-id: 128.31.1.13 } neighbour
    >> 128.31.1.14 { router-id: >> >> 128.31.1.14 } } } } } } } }