[Xorp-users] Re: help establishing OSPF adjacencies

Nick Feamster feamster@lcs.mit.edu
Mon, 31 Oct 2005 21:44:03 -0500


Yes, I do.  Here is the md5 of that file in my current tree:

#md5sum protocol_map.hh 
4a823174a886b441d8260caab2953d59  protocol_map.hh

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 } } } } } } } }