[Xorp-users] value of ttl for ripng
admin galerie
expo01 at free.fr
Tue Mar 4 14:12:58 PST 2008
Thanks Pavlin, I will try your patch tomorrow (France time) and give
you the result as soon as possible.
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);
More information about the Xorp-users
mailing list