Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Mar 2000 18:13:51 +0100 (CET)
From:      sam@enst.fr
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   docs/17552: Documentation error in divert(4)
Message-ID:  <20000322171351.6FE491E3@antinea.enst.fr>

next in thread | raw e-mail | index | archive | help

>Number:         17552
>Category:       docs
>Synopsis:       Documentation error in divert(4)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-doc
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          doc-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 22 09:40:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Samuel Tardieu
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
TELECOM Paris
>Environment:
>Description:

When developing an toy application using divert(4), I was surprised to see
that it was working only if the PF_INET/SOCK_RAW/IPPROTO_DIVERT socket,
at bind() time, has a *valid* interface address (such as INADDR_ANY).

divert(4) manpage says:

                                                                   The IP ad-
     dress in the bind is ignored; only the port number is significant.  A di-
     vert socket bound to a divert port will receive all packets diverted to
     that port by some (here unspecified) kernel mechanism(s).

This is false, as the bind() operation for a divert socket will call
in_pcbbind() which makes use of the interface address.

>How-To-Repeat:

Build a PF_INET/SOCK_RAW/IPPROTO_DIVERT socket, bind it with a sockaddr_in
structure which has an invalid sin_addr field. Diverted packets will not be
available on the socket and will be silently dropped by the kernel as if
no diverted socket was listening.

>Fix:

Two possible immediate fixes:

  (1) Doc fix: change divert(4) manpage

  (2) Code fix: when entering div_bind, change the nam->sin_addr field
      if nam->sin_family is AF_INET so that it contains INADDR_ANY. It may
      break things that would depend on the fact that a diverted socket
      can be bound to a particular interface though (natd does use
      INADDR_ANY explicitely).

>Release-Note:
>Audit-Trail:
>Unformatted:


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




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