Skip site navigation (1)Skip section navigation (2)
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>