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