*** From dhcp-server -- To unsubscribe, see the end of this message. ***
Hello Bret,
I don't see anything wrong in your bpf configuration. Maybe you can
turn on promiscuous mode and copyall mode on your fta0 manually.
I think dhcpd daemon does this at startup automaticaly, so turning it on
manually
would not probably help.
I haven't mentioned I had applied fddi patch. I've found this patch
in some posting in this mailing list. I don't remember URL nor author of
this patch.
Try to search archives if you want know him.
I've had also problems with some dhcp clients on ethernet being served
by
alpha server on FDDI. After adding three lines to common/packet.c it
started to work.
I don't know if it is bug in dhcpd or misconfiguration of our
FDDI<->Ethernet bridge.
This is all I know, bellow are the patches. Hope it will help you.
Jan Koktan [EMAIL PROTECTED]
BOTH PATCHES ARE FOR 2.0b1pl6.
patch 2 (FDDI<->Ethernet problem)
-------------------------------------------------------------------------------
For version 2.0b1pl6:
add these 3 lines under line 167 in file common/packet.c AFTER
applying patch 1.
lh.llc_un.type_snap.org_code[0] = (u_char)0x00;
lh.llc_un.type_snap.org_code[1] = (u_char)0x00;
lh.llc_un.type_snap.org_code[2] = (u_char)0x00;
For version different from 2.0b1pl6 try this:
In function assemble_hw_header, section for FDDI, fill
lh.llc_un.type_snap.org_code[3] with 0x00,
(put it under line "lh.llc_un.type_snap.control = LLC_UI; /* 0x03 */"
)
patch 1 (support for FDDI)
-------------------------------------------------------------->8---------
*** includes/cf/alphaosf.h.ORIG Mon Jun 02 21:12:43 1997
--- includes/cf/alphaosf.h Wed Mar 11 15:22:01 1998
***************
*** 96,101 ****
--- 96,103 ----
#define NEED_OSF_PFILT_HACKS
#define BPF_FORMAT "/dev/pf/pfilt%d"
+ /* Handle FDDI interfaces: */
+ #define FDDI_DEC
#if defined (USE_DEFAULT_NETWORK)
# define USE_BPF
*** includes/dhcpd.h.ORIG Sat Nov 22 01:52:16 1997
--- includes/dhcpd.h Wed Mar 11 15:08:19 1998
***************
*** 360,365 ****
--- 360,368 ----
u_int32_t flags; /* Control flags... */
#define INTERFACE_REQUESTED 1
#define INTERFACE_AUTOMATIC 2
+ #ifdef FDDI_DEC
+ #define INTERFACE_FDDI 4
+ #endif /* FDDI_DEC */
/* Only used by DHCP client code. */
struct client_state *client;
*** common/bpf.c.ORIG Mon Oct 20 16:47:13 1997
--- common/bpf.c Wed Mar 11 16:08:04 1998
***************
*** 177,182 ****
--- 177,185 ----
u_int32_t addr;
struct bpf_program p;
u_int32_t bits;
+ #ifdef FDDI_DEC
+ u_int link_layer;
+ #endif /* FDDI_DEC */
/* Open a BPF device and hang it on this interface... */
info -> rfdesc = if_register_bpf (info);
***************
*** 228,235 ****
--- 231,271 ----
to the insn number(s) used below! XXX */
filter [8].k = ntohs (local_port);
+ #ifdef FDDI_DEC
+ /* See if this is an FDDI interface, flag it for later. */
+ if ( (ioctl(info -> rfdesc, BIOCGDLT, &link_layer) >= 0) &&
+ (link_layer == DLT_FDDI) ) {
+ if (!quiet_interface_discovery)
+ note ("(FDDI Interface Detected on %s)",
+ info -> name);
+ info -> flags |= INTERFACE_FDDI;
+ /* Patch the BPF program to account for the difference
in
+ length between ethernet headers (14) and FDDI+802.2
+ headers (16+8=24, +10).
+ XXX changes to filter program may require changes
+ to the insn number(s) used below! XXX */
+ filter[0].k += 10;
+ filter[2].k += 10;
+ filter[4].k += 10;
+ filter[6].k += 10;
+ filter[7].k += 10;
+ }
+ #endif /* FDDI_DEC */
+
if (ioctl (info -> rfdesc, BIOCSETF, &p) < 0)
error ("Can't install packet filter program: %m");
+ #ifdef FDDI_DEC
+ if (info -> flags & INTERFACE_FDDI ) {
+ /* UN-Patch the BPF program from FDDI patch above.
+ XXX changes to filter program may require changes
+ to the insn number(s) used below! XXX */
+ filter[0].k -= 10;
+ filter[2].k -= 10;
+ filter[4].k -= 10;
+ filter[6].k -= 10;
+ filter[7].k -= 10;
+ }
+ #endif /* FDDI_DEC */
if (!quiet_interface_discovery)
note ("Listening on BPF/%s/%s/%s",
info -> name,
*** common/packet.c.ORIG Sat Jun 07 23:08:01 1997
--- common/packet.c Wed Mar 11 15:56:49 1998
***************
*** 53,58 ****
--- 53,63 ----
#include "includes/netinet/if_ether.h"
#endif /* PACKET_ASSEMBLY || PACKET_DECODING */
+ #ifdef FDDI_DEC
+ #include <netinet/if_fddi.h>
+ #include <net/if_llc.h>
+ #endif /* FDDI_DEC */
+
/* Compute the easy part of the checksum on a range of bytes. */
u_int32_t checksum (buf, nbytes, sum)
***************
*** 145,152 ****
--- 150,179 ----
eh.ether_type = htons (ETHERTYPE_IP);
#endif
+ #ifdef FDDI_DEC
+ if (interface -> flags & INTERFACE_FDDI ) {
+ struct fddi_header fh;
+ struct llc lh;
+
+ memcpy (fh.fddi_dhost, eh.ether_dhost, sizeof
(eh.ether_dhost))
;
+ memcpy (fh.fddi_shost, eh.ether_shost, sizeof
(eh.ether_shost))
;
+ fh.fddi_fc = FDDIFC_LLC_ASYNC;
+ memcpy (&buf [*bufix], &fh, sizeof fh);
+ *bufix += sizeof fh;
+
+ lh.llc_dsap = LLC_SNAP_LSAP;
+ lh.llc_ssap = LLC_SNAP_LSAP;
+ lh.llc_un.type_snap.control = LLC_UI;
+ lh.llc_un.type_snap.ether_type = eh.ether_type;
+ memcpy (&buf [*bufix], &lh, LLC_SNAP_LEN);
+ *bufix += LLC_SNAP_LEN;
+ } else {
+ #endif /* FDDI_DEC */
memcpy (&buf [*bufix], &eh, sizeof eh);
*bufix += sizeof eh;
+ #ifdef FDDI_DEC
+ }
+ #endif /* FDDI_DEC */
}
/* UDP header and IP header assembled together for convenience. */
***************
*** 223,230 ****
--- 250,275 ----
struct hardware *from;
{
struct ether_header eh;
+ int return_offset;
+ #ifdef FDDI_DEC
+ if (interface -> flags & INTERFACE_FDDI ) {
+ struct fddi_header fh;
+ struct llc lh;
+
+ memcpy (&fh, buf + bufix, sizeof fh);
+ memcpy (&lh, buf + bufix + sizeof fh, LLC_SNAP_LEN);
+ return_offset = sizeof fh + LLC_SNAP_LEN;
+
+ eh.ether_type = lh.llc_un.type_snap.ether_type;
+ memcpy (eh.ether_shost, fh.fddi_shost, sizeof eh.ether_shost);
+ } else {
+ #endif /* FDDI_DEC */
memcpy (&eh, buf + bufix, sizeof eh);
+ #ifdef FDDI_DEC
+ return_offset = sizeof eh;
+ }
+ #endif /* FDDI_DEC */
#ifdef USERLAND_FILTER
if (ntohs (eh.ether_type) != ETHERTYPE_IP)
***************
*** 234,240 ****
--- 279,289 ----
from -> htype = ARPHRD_ETHER;
from -> hlen = sizeof eh.ether_shost;
+ #ifdef FDDI_DEC
+ return return_offset;
+ #else /* FDDI_DEC */
return sizeof eh;
+ #endif /* FDDI_DEC */
}
/* UDP header and IP header decoded together for convenience. */
----8<----------------------------------------------------------------------------------
End Of Mail
------------------------------------------------------------------------------
To unsubscribe from this list, please visit http://www.fugue.com/dhcp/lists
If you are without web access, or if you are having trouble with the web page,
please send mail to [EMAIL PROTECTED] Please try to use the web
page first - it will take a long time for your request to be processed by hand.
Archives for this mailing list are available at
http://www.webnology.com/list-archives/dhcp/dhcp-server
------------------------------------------------------------------------------