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>