Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Apr 1998 22:38:20 +0100
From:      Brian Somers <brian@Awfulhak.org>
To:        Julian Elischer <julian@whistle.com>
Cc:        hackers@FreeBSD.ORG
Subject:   Re: RFC: IPFW/DIVERT change suggestion. 
Message-ID:  <199804272138.WAA13742@awfulhak.org>
In-Reply-To: Your message of "Mon, 27 Apr 1998 00:38:19 PDT." <Pine.BSF.3.95.980427001717.21604K-100000@current1.whistle.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
[.....]
> What can we do about this?
> 1/ change the semantics of reinjection so that the number presently used
> to indicate the rule to be immune to, is interpretted as the rule after
> which processing should restart. '1' would indicate "start again at the
> beginning. returning the same number as reported by the utility on
> reception (we would report the rule number rather than the port number)
> would make processing restart at the next rule after the divert.
> 
> By specifying the correct number you could make processed packets jump
> into a special set of rules (for example).
> 
> All present programs need to set the value to that they received,
> which they transparently pass because if they didn't they would
> get rediversion. thus all existing programs would get teh behaviour
> of continuing the examination of packets at the next rule after the 
> divert. 
> 
> This does tie ipfw and divert closer together.
[.....]

I suspect this is the best approach, and is really IMHO a more 
intuitive thing, however we've gotta be careful about the breakages 
:-)

I've been considering the tun device in this respect too.  Currently, 
it only transports IP.  If we want to support anything else (such as 
IPX etc), we need some sort of

  struct rawheader {
    int sa_family;
    int len;
    u_char data[4];
  };

  struct rawheader_divert {
    int sa_family;
    int len;
    int ruleno;
  }

  struct rawheaer_tun {
    int sa_family;
    int len;
  }

In order to dodge breaking existing stuff, I suspect a RAWHEADER 
ioctl should be available - passed a value of 1 or 0 for "on" or 
"off".  The default is "off" where you get no rawheader and behaviour 
is as it currently is.  "on" supplies rawheader structs for software 
that knows what they are.

> (any other ideas?)
> 
> julian

-- 
Brian <brian@Awfulhak.org>, <brian@FreeBSD.org>, <brian@OpenBSD.org>
      <http://www.Awfulhak.org>;
Don't _EVER_ lose your sense of humour....



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199804272138.WAA13742>