Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Dec 2001 17:14:46 -0800
From:      "Henry Su" <henrysu@nttmcl.com>
To:        "Julian Elischer" <julian@elischer.org>
Cc:        <freebsd-net@FreeBSD.ORG>
Subject:   RE: socket call in the kernel
Message-ID:  <AJEHKCJLENGKGEHDIOJGKEPDCGAA.henrysu@nttmcl.com>
In-Reply-To: <Pine.BSF.4.21.0112281656520.94344-100000@InterJet.elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
The problem is that we do not use NAT, since all the machines will have real
IP address, and we do not want to assign 2nd IP address on the control box
too. Is there any configuration allow you to do this without bridging?


__________			    ___________________
|	    |crossover cable  |			     |
|test1    |---------------->| test2(ipfw,proxy)|-->router->Internet
|_________|                 |__________________|


-----Original Message-----
From: Julian Elischer [mailto:julian@elischer.org]
Sent: Friday, December 28, 2001 4:59 PM
To: Henry Su
Cc: freebsd-net@FreeBSD.ORG
Subject: RE: socket call in the kernel




Well, you'll find an example of using a ksocket node in
/usr/share/examples/netgraph
and of course /sys/netgraph/ng_ksocket.c has the actual code that does
that if you wanted to duplicate it in your own module.

Why do you want to do bridging?
if yuo used a NAT and routed it would be a lot more standard..


On Fri, 28 Dec 2001, Henry Su wrote:

> Hi, Julian:
>
> Could you please give me some code example for using the 'ksocket' node to
> open 'in kernel'
> sockets? Thanks.
>
> -----Original Message-----
> From: owner-freebsd-net@FreeBSD.ORG
> [mailto:owner-freebsd-net@FreeBSD.ORG]On Behalf Of Julian Elischer
> Sent: Thursday, December 20, 2001 3:08 PM
> To: Henry Su
> Cc: freebsd-net@FreeBSD.ORG
> Subject: RE: socket call in the kernel
>
>
>
>
> I have two answers:
>
> 1/  Use ipfw add NNN fwd localhost,8001 [deny criteria]
>    to make the packet that is denied go to a default server listenning on
> port 8001
>
> 2/ there is an in-kernel webserver built using netgraph but it's not
> public, but Hyou can definitly use the 'ksocket' node to open 'in kernel'
> sockets and pass the result to an arbitrary node.
>
>
> 1 can do what you want with no kernel programming..
> check it out..
>
> man ipfw
>
>
> On Thu, 20 Dec 2001, Henry Su wrote:
>
> > Thanks, Julian and Alfred.
> >
> > I am trying to redirect the denied http request to a default web site.
So
> my
> > idea is in the "ip_fw_chk" function of ip_fw.c, add following code, when
> it
> > will drop the packet. But as you pointed out in earlier email, socket
can
> > not be used in this case. Do u have any other solutions? Thanks a lot.
> >
> >
> >
> >          * Finally, drop the packet.
> >          */
> >
> >
> >         /* my code start debug */
> > 	  /* find if it's a http packet */
> >         dst_port_h = ntohs(dst_port);
> >         if(dst_port_h==80){
> >                 log(LOG_INFO,"src_port:%u  src_ip:%d dst_port:%d
> dst_ip:%u",
> > ntohs(src_port), src_ip.s_addr, nt
> > ohs(dst_port), dst_ip.s_addr);
> >                 /*s = 1;*/
> >                 s = socket(AF_INET, SOCK_STREAM, 0);
> >                 if (s < 0) {
> >                         log(LOG_INFO,"Redirect socket can not be
> created");
> >                 }else{
> >                         log(LOG_INFO,"Redirect socket is created");
> >                         /*
> >                         bzero(&sa, sizeof sa);
> >                         sa.sin_family = AF_INET;
> >                         sa.sin_port = src_port;
> >                         sa.sin_addr.s_addr = src_ip.s_addr;
> >                         if (connect(s, (struct sockaddr *)&sa, sizeof
sa)
> <
> > 0) {
> >                                 log(LOG_INFO,"connect %d failed",
> > src_ip.s_addr);
> >                                 close(s);
> >                         }else{
> >                                 log(LOG_INFO,"connect %d ok",
> > src_ip.s_addr);
> >                                 close(s);
> >                         }
> >                         */
> >                         /*
> >                         while ((bytes = read(s, buffer, BUFSIZ)) > 0)
> >                                 write(1, buffer, bytes);
> >                         */
> >                 }
> >         }
> >         /* end debug */
> >         return(IP_FW_PORT_DENY_FLAG);
> >
> >
> > -----Original Message-----
> > From: Julian Elischer [mailto:julian@elischer.org]
> > Sent: Thursday, December 20, 2001 12:59 PM
> > To: Henry Su
> > Cc: freebsd-net@FreeBSD.ORG
> > Subject: Re: socket call in the kernel
> >
> >
> >
> >
> > You cannot do a socket directly but you can indirectly
> > tell me what you are trying to do and I can help..
> >
> >
> >
> > On Thu, 20 Dec 2001, Henry Su wrote:
> >
> > > I am trying to modify ip_fw.c in the /usr/src/sys/netinet, I tried to
> add
> > a
> > > socket call in the code, it can be compiled, but when it runs into the
> > code,
> > > it just crashed. It gave me the "Fatal trap error 12", Memory address
is
> > > wrong.
> > >
> > > Can any one tell me if socket call can be used in kernel level? If
not,
> > how
> > > can I accomplish socket communication in the kernel level?
> > >
> > > Thanks.
> > >
> > > ------------------------------------------------
> > >
> > > Henry Su
> > >
> > > NTT Multimedia Communications Laboratories, Inc.
> > >
> > > 250 Cambridge Avenue Suite 300
> > >
> > > Palo Alto, CA 94306, USA (PST:UTC -8H)
> > >
> > > Tel: +1 650 833 3652
> > >
> > > Fax: +1 650 326 1878
> > >
> > > http://www.nttmcl.com/
> > >
> > >
> > >
> > > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > > with "unsubscribe freebsd-net" in the body of the message
> > >
> >
> >
> >
> > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > with "unsubscribe freebsd-net" in the body of the message
> >
>
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-net" in the body of the message
>
>



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?AJEHKCJLENGKGEHDIOJGKEPDCGAA.henrysu>