[Xorp-users] value of ttl for ripng
Pavlin Radoslavov
pavlin at ICSI.Berkeley.EDU
Wed Mar 5 20:59:15 PST 2008
admin galerie <expo01 at free.fr> wrote:
> Hi Pavlin,
>
> I applied the patch, compiled and tested. It looks ok, in rip the ttl
> is still one, and in ripng the hop limit is now 255. There seems to be
> no regression elsewhere.
> You can commit in CVS ! Tell me when/if it's done, so we can be sure
> that a new checkout will bring no regression, please.
> Thanks a lot for your quick bug fixing.
I've just committed the fix:
Revision Changes Path
1.28 +13 -13; commitid: 1ca147cf77f941a7; xorp/rip/xrl_port_io.cc
1.14 +3 -3; commitid: 1ca147cf77f941a7; xorp/rip/xrl_port_io.hh
Yes, the TTL for RIPv2 is still 1, because the RIPv2 spec
doesn't say anything on the subject, therefore the generic rule for
link-local multicast applies (TTL = 1).
Regards,
Pavlin
> Regards,
>
> Vincent
> Le 4 mars 08, à 22:54, Pavlin Radoslavov a écrit :
>
> > expo01 at free.fr wrote:
> >
> >> We are using Rip and Ripng from Xorp, and we have a problem with a
> >> Juniper
> >> router that accepts our Rip messages, but rejects the Ripng messages,
> >> pretexting
> >> their "ttl is 1, which is different from 255". We use Xorp 1.5-WIP. I
> >> had a very
> >> quick look at Xorp sources, and in the rip/tools directory, I found
> >> that
> >> ripng_announcer makes a call to comm_set_ttl(fd, 255), which seems
> >> ok. But in
> >> fact, that's true that our Ripng packets are finally issued with a
> >> ttl value
> >> equal to 1. Any idea ?
> >
> > I think it is a bug in XORP.
> > Plese try the following patch, and if it works I will commit it to
> > CVS.
> >
> > Thanks,
> > Pavlin
> >
> > Index: xrl_port_io.cc
> > ===================================================================
> > RCS file: /usr/local/www/data/cvs/xorp/rip/xrl_port_io.cc,v
> > retrieving revision 1.27
> > diff -u -p -r1.27 xrl_port_io.cc
> > --- xrl_port_io.cc 4 Jan 2008 03:17:34 -0000 1.27
> > +++ xrl_port_io.cc 4 Mar 2008 21:50:41 -0000
> > @@ -88,12 +88,12 @@ XrlPortIO<IPv4>::request_open_bind_socke
> >
> > template <>
> > bool
> > -XrlPortIO<IPv4>::request_ttl_one()
> > +XrlPortIO<IPv4>::request_ttl()
> > {
> > XrlSocket4V0p1Client cl(&_xr);
> > return cl.send_set_socket_option(
> > - _ss.c_str(), socket_id(), "multicast_ttl", 1,
> > - callback(this, &XrlPortIO<IPv4>::ttl_one_cb));
> > + _ss.c_str(), socket_id(), "multicast_ttl", RIP_TTL,
> > + callback(this, &XrlPortIO<IPv4>::ttl_cb));
> > }
> >
> > template <>
> > @@ -191,12 +191,12 @@ XrlPortIO<IPv6>::request_open_bind_socke
> >
> > template <>
> > bool
> > -XrlPortIO<IPv6>::request_ttl_one()
> > +XrlPortIO<IPv6>::request_ttl()
> > {
> > XrlSocket6V0p1Client cl(&_xr);
> > return cl.send_set_socket_option(
> > - _ss.c_str(), socket_id(), "multicast_ttl", 1,
> > - callback(this, &XrlPortIO<IPv6>::ttl_one_cb));
> > + _ss.c_str(), socket_id(), "multicast_ttl", RIP_NG_HOP_COUNT,
> > + callback(this, &XrlPortIO<IPv6>::ttl_cb));
> > }
> >
> > template <>
> > @@ -343,8 +343,8 @@ XrlPortIO<A>::startup_socket()
> > // If we succeed here the path is:
> > // request_open_bind_socket()
> > // -> open_bind_socket_cb()
> > - // -> request_ttl_one()
> > - // -> ttl_one_cb()
> > + // -> request_ttl()
> > + // -> ttl_cb()
> > // -> request_no_loop()
> > // -> no_loop_cb()
> > // ->request_socket_join()
> > @@ -379,17 +379,17 @@ XrlPortIO<A>::open_bind_socket_cb(const
> > _sid = *psid;
> > socket_manager.add_sockid(_ss, _sid);
> >
> > - if (request_ttl_one() == false) {
> > - set_status(SERVICE_FAILED, "Failed requesting ttl/hops of 1.");
> > + if (request_ttl() == false) {
> > + set_status(SERVICE_FAILED, "Failed requesting ttl/hops.");
> > }
> > }
> >
> > template <typename A>
> > void
> > -XrlPortIO<A>::ttl_one_cb(const XrlError& e)
> > +XrlPortIO<A>::ttl_cb(const XrlError& e)
> > {
> > if (e != XrlError::OKAY()) {
> > - XLOG_WARNING("Failed to set ttl/hops to 1");
> > + XLOG_WARNING("Failed to set ttl/hops.");
> > }
> > if (request_no_loop() == false) {
> > set_status(SERVICE_FAILED,
> > Index: xrl_port_io.hh
> > ===================================================================
> > RCS file: /usr/local/www/data/cvs/xorp/rip/xrl_port_io.hh,v
> > retrieving revision 1.13
> > diff -u -p -r1.13 xrl_port_io.hh
> > --- xrl_port_io.hh 4 Jan 2008 03:17:34 -0000 1.13
> > +++ xrl_port_io.hh 4 Mar 2008 21:50:41 -0000
> > @@ -94,8 +94,8 @@ private:
> > bool request_open_bind_socket();
> > void open_bind_socket_cb(const XrlError& xe, const string* psid);
> >
> > - bool request_ttl_one();
> > - void ttl_one_cb(const XrlError& xe);
> > + bool request_ttl();
> > + void ttl_cb(const XrlError& xe);
> >
> > bool request_no_loop();
> > void no_loop_cb(const XrlError& xe);
>
>
> _______________________________________________
> Xorp-users mailing list
> Xorp-users at xorp.org
> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-users
More information about the Xorp-users
mailing list