home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / os / vxworks / 1190 < prev    next >
Encoding:
Text File  |  1993-01-10  |  3.2 KB  |  84 lines

  1. Newsgroups: comp.os.vxworks
  2. Path: sparky!uunet!gumby!wupost!csus.edu!netcom.com!hjb
  3. From: hjb@netcom.com (H. J. Bae)
  4. Subject: Re: More on broadcast problem
  5. Message-ID: <1993Jan10.184053.9292@netcom.com>
  6. Organization: Peaceful Star Project
  7. References: <9301081857.AA11564@cinnabar.netx.com>
  8. Date: Sun, 10 Jan 1993 18:40:53 GMT
  9. Lines: 73
  10.  
  11. In article <9301081857.AA11564@cinnabar.netx.com> thoff@netxwest.com (Todd Hoff) writes:
  12. >The suggestion here is that code resolving IP addresses isn't looking
  13. >at the subnet mask. Is seems the broadcast IP address is not recognized
  14. >as such and is forwarded to the router where the router
  15. >of course will not forward the broadcast.
  16.  
  17. here's in_broadcastaddr() from the tahoe code:
  18.  
  19. /*
  20.  * Return 1 if the address might be a local broadcast address.
  21.  */
  22. in_broadcast(in)
  23.     struct in_addr in;
  24. {
  25.         register struct in_ifaddr *ia;
  26.         u_long t;
  27.  
  28.         /*
  29.          * Look through the list of addresses for a match
  30.          * with a broadcast address.
  31.          */
  32.         for (ia = in_ifaddr; ia; ia = ia->ia_next)
  33.             if (ia->ia_ifp->if_flags & IFF_BROADCAST) {
  34.                 if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr == in.s_addr)
  35.                      return (1);
  36.                 /*
  37.                  * Check for old-style (host 0) broadcast.
  38.                  */
  39.                 if ((t = ntohl(in.s_addr)) == ia->ia_subnet || t == ia->ia_net)
  40.                     return (1);
  41.         }
  42.         if (in.s_addr == INADDR_BROADCAST || in.s_addr == INADDR_ANY)
  43.                 return (1);
  44.         return (0);
  45. }
  46.  
  47.  
  48. the only reason this could fail would be some incorrect configuration
  49. some where (at some participating node).  if you're suspecting vxworks
  50. for not recognizing subnet bcast ip address as such, you can call
  51. in_broadcast from the shell or write a small piece of code to find out.
  52. using the shell's built-in debugger (assembly) you could single step
  53. to track down the exact behavior, if you'd like.  but, as the code says,
  54. if netif bcast ip address is incorrectly set on some node, this code
  55. will return 0.
  56.  
  57. if you have a traditional network (the one that has one network/subnet
  58. per physical segment of ethernet) and your target machine is not
  59. multi-homed, it is also legal to use all 1's ip address to indicate
  60. "broadcast to the immediately attached networks only".  trying
  61. "255.255.255.255", for example, should work and you can avoid
  62. the headaches.
  63.  
  64. the issue regarding the route entry:  ip_output() has to be able to
  65. resolve the route entry for the given destination address -- to
  66. fetch the netif pointer used throughout (including arpresolve process
  67. which uses in_broadcast before actually sending out any arp req's).
  68. i'd still maintain that you need to keep correct route tables for
  69. the subnets.  given that, and given that the correct netif (which
  70. will be in the route entry returned by rtalloc) has correct broadcast
  71. address proper for the subnet, things should work.  all participating
  72. machines should be checked for this. [as i'm not still sure of your
  73. exact configuration]
  74.  
  75. if someone has any insight, i'm very interested to hear...  [guess
  76. i'm just very very curious....  :-) ]  thanks
  77.  
  78. hwajin
  79.  
  80. -- 
  81. Peaceful Star Project    hjb@netcom.com
  82. 2899 Ford Street    Available for peaceful, responsible work only.
  83. Oakland, CA 94601    (510) 536-7607
  84.