[Click] Off-by-one buglet in LinuxIPLookup element, Click 1.5.0

Christian Kreibich christian at icir.org
Mon Apr 9 15:50:52 EDT 2007


Hi,

I think there's an off-by-one in elements/ip/lookupiproutelinux.c:

--- lookupiproutelinux.cc       2006-05-19 00:12:21.000000000 -0700
+++ lookupiproutelinux.cc.new   2007-04-09 11:27:48.000000000 -0700
@@ -59,7 +59,7 @@
 {
   _out2devname = conf;
   _nout = _out2devname.size();
-  if (_nout + 1 >= noutputs())
+  if (_nout + 1 > noutputs())
       return errh->error("need %d or more output ports", _nout + 1);
   return 0;
 }

Basically, when you configure the element with n devices and use n+1
output ports (as should be), then you still get the error because n+1 ==
noutputs(). Adding discarders works around the problem:

  r : LinuxIPLookup(eth0, eth1)
  r[0] -> ... -> ToDevice(eth0)
  r[1] -> ... -> ToDevice(eth1)
  r[2] -> ICMPError(18.26.4.24, 3, 0) -> ...
  r[3] -> Discard

-- 
Cheers,
Christian



More information about the click mailing list