<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2010-12-08)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-12-08 Sebastian Huber <sebastian.huber@embedded-brains.de>

        * libnetworking/loop.h, libnetworking/net/if_loop.c,
        libnetworking/rtems/rtems_glue.c, libmisc/dummy/dummy-networking.c:
        Initialize loop back interface during normal initialization via
        rtems_bsdnet_initialize_network().
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2662&r2=text&tr2=1.2663&diff_format=h">M</a></td><td width='1%'>1.2663</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libmisc/dummy/dummy-networking.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>cpukit/libmisc/dummy/dummy-networking.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libnetworking/loop.h.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>cpukit/libnetworking/loop.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libnetworking/net/if_loop.c.diff?r1=text&tr1=1.12&r2=text&tr2=1.13&diff_format=h">M</a></td><td width='1%'>1.13</td><td width='100%'>cpukit/libnetworking/net/if_loop.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libnetworking/rtems/rtems_glue.c.diff?r1=text&tr1=1.52&r2=text&tr2=1.53&diff_format=h">M</a></td><td width='1%'>1.53</td><td width='100%'>cpukit/libnetworking/rtems/rtems_glue.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2662 rtems/cpukit/ChangeLog:1.2663
--- rtems/cpukit/ChangeLog:1.2662       Fri Dec  3 14:34:24 2010
+++ rtems/cpukit/ChangeLog      Wed Dec  8 04:30:26 2010
</font><font color='#997700'>@@ -1,3 +1,10 @@
</font><font color='#000088'>+2010-12-08    Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+       * libnetworking/loop.h, libnetworking/net/if_loop.c,
+       libnetworking/rtems/rtems_glue.c, libmisc/dummy/dummy-networking.c:
+       Initialize loop back interface during normal initialization via
+       rtems_bsdnet_initialize_network().
+
</font> 2010-12-03        Joel Sherrill <joel.sherrill@oarcorp.com>
 
        * configure.ac, posix/src/signal_2.c: sighandler_t is defined

<font color='#006600'>diff -u rtems/cpukit/libmisc/dummy/dummy-networking.c:1.1 rtems/cpukit/libmisc/dummy/dummy-networking.c:1.2
--- rtems/cpukit/libmisc/dummy/dummy-networking.c:1.1   Tue Aug  4 19:00:54 2009
+++ rtems/cpukit/libmisc/dummy/dummy-networking.c       Wed Dec  8 04:30:27 2010
</font><font color='#997700'>@@ -23,22 +23,8 @@
</font>   #include <sys/socket.h>
   #include <netinet/in.h>
 
<font color='#880000'>-  extern int rtems_bsdnet_loopattach(struct rtems_bsdnet_ifconfig *, int);
-
-  static struct rtems_bsdnet_ifconfig loopback_config = {
-      "lo0",                     /* name */
-      rtems_bsdnet_loopattach,   /* attach function */
-      NULL,                      /* link to next interface */
-      "127.0.0.1",               /* IP address */
-      "255.0.0.0",               /* IP net mask */
-      0,                         /* hardware_address */
-      0, 0, 0, 0,
-      0, 0, 0,
-      0
-  };
-
</font>   struct rtems_bsdnet_config rtems_bsdnet_config = {
<font color='#880000'>-      &loopback_config,       /* Network interface */
</font><font color='#000088'>+      NULL,                   /* Network interface */
</font>       NULL,                   /* Use fixed network configuration */
       0,                      /* Default network task priority */
       0,                      /* Default mbuf capacity */

<font color='#006600'>diff -u rtems/cpukit/libnetworking/loop.h:1.2 rtems/cpukit/libnetworking/loop.h:1.3
--- rtems/cpukit/libnetworking/loop.h:1.2       Thu Aug 20 16:56:22 1998
+++ rtems/cpukit/libnetworking/loop.h   Wed Dec  8 04:30:27 2010
</font><font color='#997700'>@@ -2,4 +2,19 @@
</font>  *  $Id$
  */
 
<font color='#000088'>+#ifndef _RTEMS_BSDNET_LOOP_H
+#define _RTEMS_BSDNET_LOOP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
</font> #define NLOOP 1
<font color='#000088'>+
+void rtems_bsdnet_initialize_loop(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTEMS_BSDNET_LOOP_H */
</font>
<font color='#006600'>diff -u rtems/cpukit/libnetworking/net/if_loop.c:1.12 rtems/cpukit/libnetworking/net/if_loop.c:1.13
--- rtems/cpukit/libnetworking/net/if_loop.c:1.12       Sun Mar 28 00:50:28 2010
+++ rtems/cpukit/libnetworking/net/if_loop.c    Wed Dec  8 04:30:27 2010
</font><font color='#997700'>@@ -92,8 +92,6 @@
</font> static int loioctl(struct ifnet *, ioctl_command_t, caddr_t);
 static void lortrequest(int, struct rtentry *, struct sockaddr *);
 
<font color='#880000'>-void rtems_bsdnet_loopattach(void *);
-
</font> #ifdef TINY_LOMTU
 #define        LOMTU   (1024+512)
 #elif defined(LARGE_LOMTU)
<font color='#997700'>@@ -105,7 +103,7 @@
</font> struct    ifnet loif[NLOOP];
 
 void
<font color='#880000'>-rtems_bsdnet_loopattach(void *dummy)
</font><font color='#000088'>+rtems_bsdnet_initialize_loop(void)
</font> {
        register struct ifnet *ifp;
        register int i = 0;

<font color='#006600'>diff -u rtems/cpukit/libnetworking/rtems/rtems_glue.c:1.52 rtems/cpukit/libnetworking/rtems/rtems_glue.c:1.53
--- rtems/cpukit/libnetworking/rtems/rtems_glue.c:1.52  Thu Dec 17 14:26:09 2009
+++ rtems/cpukit/libnetworking/rtems/rtems_glue.c       Wed Dec  8 04:30:27 2010
</font><font color='#997700'>@@ -40,6 +40,8 @@
</font> #include <net/netisr.h>
 #include <net/route.h>
 
<font color='#000088'>+#include "loop.h"
+
</font> /*
  * Sysctl init all.
  */
<font color='#997700'>@@ -99,6 +101,20 @@
</font> int rtems_bsdnet_ntpserver_count = 0;
 int32_t rtems_bsdnet_timeoffset = 0;
 
<font color='#000088'>+static const struct sockaddr_in address_template = {
+       sizeof(address_template),
+       AF_INET,
+       0,
+       { INADDR_ANY },
+       { 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static void
+rtems_bsdnet_initialize_sockaddr_in(struct sockaddr_in *addr)
+{
+       memcpy(addr, &address_template, sizeof(*addr));
+}
+
</font> /*
  * Perform FreeBSD memory allocation.
  * FIXME: This should be modified to keep memory allocation statistics.
<font color='#997700'>@@ -315,6 +331,9 @@
</font>    * Let other network tasks begin
         */
        rtems_bsdnet_semaphore_release ();
<font color='#000088'>+
+       rtems_bsdnet_initialize_loop();
+
</font>   return 0;
 }
 
<font color='#997700'>@@ -822,17 +841,81 @@
</font>   return 0;
 }
 
<font color='#000088'>+static bool
+rtems_bsdnet_setup_interface(
+       const char *name,
+       const char *ip_address,
+       const char *ip_netmask
+)
+{
+       struct sockaddr_in address;
+       struct sockaddr_in netmask;
+       short flags;
+
+       /*
+        * Bring interface up
+        */
+       flags = IFF_UP;
+       if (rtems_bsdnet_ifconfig (name, SIOCSIFFLAGS, &flags) < 0) {
+               printf ("Can't bring %s up: %s\n", name, strerror (errno));
+               return false;
+       }
+
+       /*
+        * Set interface netmask
+        */
+       rtems_bsdnet_initialize_sockaddr_in(&netmask);
+       netmask.sin_addr.s_addr = inet_addr (ip_netmask);
+       if (rtems_bsdnet_ifconfig (name, SIOCSIFNETMASK, &netmask) < 0) {
+               printf ("Can't set %s netmask: %s\n", name, strerror (errno));
+               return false;
+       }
+
+       /*
+        * Set interface address
+        */
+       rtems_bsdnet_initialize_sockaddr_in(&address);
+       address.sin_addr.s_addr = inet_addr (ip_address);
+       if (rtems_bsdnet_ifconfig (name, SIOCSIFADDR, &address) < 0) {
+               printf ("Can't set %s address: %s\n", name, strerror (errno));
+               return false;
+       }
+
+       /*
+        * Set interface broadcast address if the interface has the
+        * broadcast flag set.
+        */
+       if (rtems_bsdnet_ifconfig (name, SIOCGIFFLAGS, &flags) < 0) {
+               printf ("Can't read %s flags: %s\n", name, strerror (errno));
+               return false;
+       }
+
+       if (flags & IFF_BROADCAST) {
+               struct sockaddr_in broadcast;
+
+               rtems_bsdnet_initialize_sockaddr_in(&broadcast);
+               broadcast.sin_addr.s_addr =
+                               address.sin_addr.s_addr | ~netmask.sin_addr.s_addr;
+               if (rtems_bsdnet_ifconfig (name, SIOCSIFBRDADDR, &broadcast) < 0) {
+                       struct in_addr  in_addr;
+                       char                    buf[20];
+                       in_addr.s_addr = broadcast.sin_addr.s_addr;
+                       if (!inet_ntop(AF_INET, &in_addr, buf, sizeof(buf)))
+                                       strcpy(buf,"?.?.?.?");
+                       printf ("Can't set %s broadcast address %s: %s\n",
+                               name, buf, strerror (errno));
+               }
+       }
+
+       return true;
+}
+
</font> static int
 rtems_bsdnet_setup (void)
 {
        struct rtems_bsdnet_ifconfig *ifp;
<font color='#880000'>-   short flags;
-       struct sockaddr_in address;
-       struct sockaddr_in netmask;
-       struct sockaddr_in broadcast;
-       struct sockaddr_in gateway;
</font>   int i;
<font color='#880000'>-   int any_if_configured = 0;
</font><font color='#000088'>+      bool any_if_configured = false;
</font> 
        /*
         * Set local parameters
<font color='#997700'>@@ -864,82 +947,36 @@
</font>   /*
         * Configure interfaces
         */
<font color='#000088'>+   any_if_configured |= rtems_bsdnet_setup_interface(
+               "lo0",
+               "127.0.0.1",
+               "255.0.0.0"
+       );
</font>   for (ifp = rtems_bsdnet_config.ifconfig ; ifp ; ifp = ifp->next) {
                if (ifp->ip_address == NULL)
                        continue;
 
<font color='#880000'>-           /*
-                * Bring interface up
-                */
-               flags = IFF_UP;
-               if (rtems_bsdnet_ifconfig (ifp->name, SIOCSIFFLAGS, &flags) < 0) {
-                       printf ("Can't bring %s up: %s\n", ifp->name, strerror (errno));
-                       continue;
-               }
-
-               /*
-                * Set interface netmask
-                */
-               memset (&netmask, '\0', sizeof netmask);
-               netmask.sin_len = sizeof netmask;
-               netmask.sin_family = AF_INET;
-               netmask.sin_addr.s_addr = inet_addr (ifp->ip_netmask);
-               if (rtems_bsdnet_ifconfig (ifp->name, SIOCSIFNETMASK, &netmask) < 0) {
-                       printf ("Can't set %s netmask: %s\n", ifp->name, strerror (errno));
-                       continue;
-               }
-
-               /*
-                * Set interface address
-                */
-               memset (&address, '\0', sizeof address);
-               address.sin_len = sizeof address;
-               address.sin_family = AF_INET;
-               address.sin_addr.s_addr = inet_addr (ifp->ip_address);
-               if (rtems_bsdnet_ifconfig (ifp->name, SIOCSIFADDR, &address) < 0) {
-                       printf ("Can't set %s address: %s\n", ifp->name, strerror (errno));
-                       continue;
-               }
-
-               /*
-                * Set interface broadcast address if the interface has the
-                * broadcast flag set.
-                */
-               if (rtems_bsdnet_ifconfig (ifp->name, SIOCGIFFLAGS, &flags) < 0) {
-                       printf ("Can't read %s flags: %s\n", ifp->name, strerror (errno));
-                       continue;
-               }
-
-               any_if_configured = 1;
-
-               if (flags & IFF_BROADCAST) {
-                       memset (&broadcast, '\0', sizeof broadcast);
-                       broadcast.sin_len = sizeof broadcast;
-                       broadcast.sin_family = AF_INET;
-                       broadcast.sin_addr.s_addr =
-                                       address.sin_addr.s_addr | ~netmask.sin_addr.s_addr;
-                       if (rtems_bsdnet_ifconfig (ifp->name, SIOCSIFBRDADDR, &broadcast) < 0) {
-                               struct in_addr  in_addr;
-                               char                    buf[20];
-                               in_addr.s_addr = broadcast.sin_addr.s_addr;
-                               if (!inet_ntop(AF_INET, &in_addr, buf, sizeof(buf)))
-                                               strcpy(buf,"?.?.?.?");
-                               printf ("Can't set %s broadcast address %s: %s\n",
-                                       ifp->name, buf, strerror (errno));
-                       }
-               }
</font><font color='#000088'>+              any_if_configured |= rtems_bsdnet_setup_interface(
+                       ifp->name,
+                       ifp->ip_address,
+                       ifp->ip_netmask
+               );
</font>   }
 
        /*
         * Set default route
         */
        if (rtems_bsdnet_config.gateway && any_if_configured) {
<font color='#880000'>-           address.sin_addr.s_addr = INADDR_ANY;
-               netmask.sin_addr.s_addr = INADDR_ANY;
-               memset (&gateway, '\0', sizeof gateway);
-               gateway.sin_len = sizeof gateway;
-               gateway.sin_family = AF_INET;
</font><font color='#000088'>+              struct sockaddr_in address;
+               struct sockaddr_in netmask;
+               struct sockaddr_in gateway;
+
+               rtems_bsdnet_initialize_sockaddr_in(&address);
+               rtems_bsdnet_initialize_sockaddr_in(&netmask);
+               rtems_bsdnet_initialize_sockaddr_in(&gateway);
+
</font>           gateway.sin_addr.s_addr = inet_addr (rtems_bsdnet_config.gateway);
<font color='#000088'>+
</font>           if (rtems_bsdnet_rtrequest (
                                RTM_ADD,
                                (struct sockaddr *)&address,
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-12-08 Sebastian Huber <Sebastian.Huber@embedded-brains.de>

        * loopback/init.c: Loop back interface will be initialized now during
        normal initialization via rtems_bsdnet_initialize_network().
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/samples/ChangeLog.diff?r1=text&tr1=1.181&r2=text&tr2=1.182&diff_format=h">M</a></td><td width='1%'>1.182</td><td width='100%'>testsuites/samples/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/samples/loopback/init.c.diff?r1=text&tr1=1.10&r2=text&tr2=1.11&diff_format=h">M</a></td><td width='1%'>1.11</td><td width='100%'>testsuites/samples/loopback/init.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/testsuites/samples/ChangeLog:1.181 rtems/testsuites/samples/ChangeLog:1.182
--- rtems/testsuites/samples/ChangeLog:1.181    Mon Aug 16 09:20:48 2010
+++ rtems/testsuites/samples/ChangeLog  Wed Dec  8 04:32:05 2010
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2010-12-08    Sebastian Huber <Sebastian.Huber@embedded-brains.de>
+
+       * loopback/init.c: Loop back interface will be initialized now during
+       normal initialization via rtems_bsdnet_initialize_network().
+
</font> 2010-08-16        Ralf Corsépius <ralf.corsepius@rtems.org>
 
        * fileio/Makefile.am: Remove AM_CONDITIONAL(LIBCHIP).

<font color='#006600'>diff -u rtems/testsuites/samples/loopback/init.c:1.10 rtems/testsuites/samples/loopback/init.c:1.11
--- rtems/testsuites/samples/loopback/init.c:1.10       Sun Nov  1 22:24:14 2009
+++ rtems/testsuites/samples/loopback/init.c    Wed Dec  8 04:32:05 2010
</font><font color='#997700'>@@ -44,27 +44,9 @@
</font> /*
  * Network configuration
  */
<font color='#880000'>-extern int rtems_bsdnet_loopattach(struct rtems_bsdnet_ifconfig *conf, int attaching);
-
-static struct rtems_bsdnet_ifconfig loopback_config = {
-    "lo0",                          /* name */
-    rtems_bsdnet_loopattach,        /* attach function */
-    NULL,                           /* link to next interface */
-    "127.0.0.1",                    /* IP address */
-    "255.0.0.0",                    /* IP net mask */
-    NULL,                           /* hardware_address */
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    NULL
-};
</font> 
 struct rtems_bsdnet_config rtems_bsdnet_config = {
<font color='#880000'>-    &loopback_config,       /* Network interface */
</font><font color='#000088'>+    NULL,                   /* Network interface */
</font>     NULL,                   /* Use fixed network configuration */
     0,                      /* Default network task priority */
     0,                      /* Default mbuf capacity */
</pre>
<p> </p>

<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>