Date: Fri, 19 Jul 1996 18:04:32 -0400 From: Gary Chrysler <tcg@ime.net> To: John Hay <jhay@mikom.csir.co.za> Cc: questions@freebsd.org Subject: Re: Scanning for Interfaces! Message-ID: <31F00670.6C5E@ime.net> References: <199607191819.UAA02586@zibbi.mikom.csir.co.za>
next in thread | previous in thread | raw e-mail | index | archive | help
John Hay wrote:
>
<chomp>
>
> I see Garrett has already answered the other questions, so I will just
> comment on this one.
Yup, I haven't had enough time yet to fully asorb Garrets reply
as of yet.. :(
Working on it. Thanks Garret!
> Defining sipx_network there will probably not work, because the kernel
> part of ipx will expect it inside sipx_addr. Maybe you can make a #define
> to make getting to it easier, eg.
> #define sipx_network (*(union ipx_net_u *)&sipx_addr.x_net)).long_e
> Note that this may not be correct because I have been looking at a
> -current ipx.h file.
Yea, I did use a define at first and that caused trouble, But
I didn't do it as you suggest! I'll try it as well as show
what I have in ipx.h, I belive it is the same as current.
(MCI's Wonderfull high speed back bone is up to it's normal speed.
So I couldn't get to a -current ipx.h for comparision<sp?> before
this reply, I will look later when usage is lower.)
My ipx.h is from the fbsd-ipx.tgz.
It is: (Revelant part, shortened)
union ipx_host {
u_char c_host[6];
u_short s_host[3];
};
union ipx_net {
u_char c_net[4];
u_short s_net[2];
};
union ipx_net_u {
union ipx_net net_e;
u_long long_e;
};
struct ipx_addr {
union ipx_net x_net;
union ipx_host x_host;
u_short x_port;
};
struct sockaddr_ipx {
u_char sipx_len;
u_char sipx_family;
struct ipx_addr sipx_addr;
char sipx_zero[2];
u_char sipx_type; /* tcg */
u_long sipx_network; /* tcg */
};
#define sipx_port sipx_addr.x_port
#define sipx_special sipx_addr.x_port /* tcg */
/* #define sipx_network sipx_addr.x_net tcg */
#define sipx_node sipx_addr.x_host.c_host /* tcg */
NOTE: Ok pick yourself up off the floor and quit laughing!
These (whatevers) did move me along.. Maybe not in the right
direction but any direction is better then no direction.
I did get further and learned a bunch!
sipx_special, Is defined the same in the Linux ipx.h
sipx_node, :) I know it's wrong.. whats right/better??
sipx_network, ?? John, is your suggestion fitting??
In hopes maybe one of you kind souls will pass along better/right
methods I've included the Linux sockaddr_ipx.
(it was in my ipx.h for my reference.)
I do realize the parsing of these variables in the program
needs to be changed to match the different types.
I would rather change the program then the kernel. :)
/* tcg linux
struct sockaddr_ipx
{
short sipx_family; ok
short sipx_port; ok
unsigned long sipx_network; added
unsigned char sipx_node[IPX_NODE_LEN]; kludged
unsigned char sipx_type; added
unsigned char sipx_zero; 16 byte fill
};
*/
> I'm not sure what the purpose of the sipx_type field is. Is it the
> ipx type that should be used in the type field of the packet? Because
> that is set with a setsockopt(....., SO_DEFAULT_HEADERS, ...) call.
> You can get an example of that in IPXrouted/main.c
Yes John, That is what it is. (I belive)
It's one of:
#define IPX_NCP_PTYPE 0x17
#define IPX_RIP_PTYPE (1U)
#define IPX_SAP_PTYPE (4U)
#define IPX_USER_PTYPE (0)
I've assumed PTYPE means Packet type..
Code looks that way as well. :)
Thanks John, I'll look into the setsockopt(...).
I really appreciate your alls assistance.
-Enjoy
Gary
~~~~~~~~~~~~~~~~
Improve America's Knowledge... Share yours
The Borg... Where minds meet
(207) 929-3848
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?31F00670.6C5E>
