Date: Tue, 9 Apr 2002 21:56:21 +0200 From: "Sebastien Petit" <spe@selectbourse.net> To: "Julian Elischer" <julian@elischer.org> Cc: <net@freebsd.org> Subject: Re: Netgraph question Message-ID: <006401c1e000$9fa977f0$020110ac@SPE> References: <Pine.BSF.4.21.0204091227170.57350-100000@InterJet.elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ok julian,
So I must write loadd with ng_ether for the moment and wait for ng_etf
include in FreeBSD 4.x.
I can modify my code after if ng_etf is available...
Last question, when I write a packet on the lower hook, must I include a
CRC32 field at the end of the ethernet packet ?
I create a little test program for connecting lower <-> upper, but doesn't
seem to work, what is wrong ?
#include <netgraph.h>
#include <netgraph/ng_ether.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include <fcntl.h>
#define HOOKNAME "myhook"
#define HOOKNAME2 "myhook2"
int main(int argc, char **argv)
{
int csock, dsock;
struct ngm_connect ngc;
struct ngm_connect ngc2;
int bytesread;
char buf[4096];
char hookname[4096];
fd_set fds;
u_short *csum;
NgMkSockNode(NULL, &csock, &dsock);
snprintf(ngc.path, sizeof(ngc.path), "xl0:");
snprintf(ngc.ourhook, sizeof(ngc.ourhook), HOOKNAME);
snprintf(ngc.peerhook, sizeof(ngc.peerhook), "upper");
NgSendMsg(csock, ".", NGM_GENERIC_COOKIE, NGM_CONNECT, &ngc,
sizeof(ngc));
snprintf(ngc2.path, sizeof(ngc2.path), "xl0:");
snprintf(ngc2.ourhook, sizeof(ngc2.ourhook), HOOKNAME2);
snprintf(ngc2.peerhook, sizeof(ngc2.peerhook), "lower");
NgSendMsg(csock, ".", NGM_GENERIC_COOKIE, NGM_CONNECT, &ngc2,
sizeof(ngc2));
for (;;) {
bzero(buf, sizeof(buf));
bytesread = NgRecvData(dsock, buf, sizeof(buf), hookname);
if (! strcmp(hookname, "myhook")) {
printf("%s !\n", hookname);
NgSendData(dsock, HOOKNAME2, buf, bytesread);
}
if (! strcmp(hookname, "myhook2")) {
printf("%s !\n", hookname);
NgSendData(dsock, HOOKNAME, buf, bytesread);
}
}
}
Thanks,
Sebastien.
--
spe@selectbourse.net
----- Original Message -----
From: "Julian Elischer" <julian@elischer.org>
To: "Sebastien Petit" <spe@selectbourse.net>
Cc: <net@freebsd.org>
Sent: Tuesday, April 09, 2002 9:35 PM
Subject: Re: Netgraph question
> there is a node called etf (ethertype filter)
> that can allow different nodes to share an ethernet interface
> The ppp daemon needs to be modified a bit to be able to use it..
>
> Brian, what does it take to allow one to specify a different node and
> hook?
> I.e.
>
> if I hook an ethertype filter onto the interface and set it up
> to send pppoe to hook A and everything else to hook B is there soem way I
> can tell PPP to uset node etf0:B rather than fxp0:orphans?
>
> The etf type is not MFC'd to 4.x yet..
> I need to do that! thanks for reminding me..
>
>
>
> On Tue, 9 Apr 2002, Sebastien Petit wrote:
>
> > Hi,
> >
> > Actually I rewrote loadd (a load balancing daemon) for running with
> > netgraph. In the original version, loadd use Divert sockets with ipfw
> > for taking incoming/outgoing traffic. What node I must use for doing
> > the same thing ? I try to use ng_ether but if I do that, People that
> > run pppoe on the same device as load balancing can't use it.
> >
> > Any idea ?
> >
> > Sebastien.
> > --
> > spe@selectbourse.net
> >
>
>
>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?006401c1e000$9fa977f0$020110ac>
