change log for rtems (2010-12-08)

rtems-vc at rtems.org rtems-vc at rtems.org
Wed Dec 8 11:10:35 UTC 2010


 *sh*:
2010-12-08	Sebastian Huber <sebastian.huber at 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().

M 1.2663  cpukit/ChangeLog
M    1.2  cpukit/libmisc/dummy/dummy-networking.c
M    1.3  cpukit/libnetworking/loop.h
M   1.13  cpukit/libnetworking/net/if_loop.c
M   1.53  cpukit/libnetworking/rtems/rtems_glue.c

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
@@ -1,3 +1,10 @@
+2010-12-08	Sebastian Huber <sebastian.huber at 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().
+
 2010-12-03	Joel Sherrill <joel.sherrill at oarcorp.com>
 
 	* configure.ac, posix/src/signal_2.c: sighandler_t is defined

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
@@ -23,22 +23,8 @@
   #include <sys/socket.h>
   #include <netinet/in.h>
 
-  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
-  };
-
   struct rtems_bsdnet_config rtems_bsdnet_config = {
-      &loopback_config,       /* Network interface */
+      NULL,                   /* Network interface */
       NULL,                   /* Use fixed network configuration */
       0,                      /* Default network task priority */
       0,                      /* Default mbuf capacity */

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
@@ -2,4 +2,19 @@
  *  $Id$
  */
 
+#ifndef _RTEMS_BSDNET_LOOP_H
+#define _RTEMS_BSDNET_LOOP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define NLOOP 1
+
+void rtems_bsdnet_initialize_loop(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTEMS_BSDNET_LOOP_H */

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
@@ -92,8 +92,6 @@
 static int loioctl(struct ifnet *, ioctl_command_t, caddr_t);
 static void lortrequest(int, struct rtentry *, struct sockaddr *);
 
-void rtems_bsdnet_loopattach(void *);
-
 #ifdef TINY_LOMTU
 #define	LOMTU	(1024+512)
 #elif defined(LARGE_LOMTU)
@@ -105,7 +103,7 @@
 struct	ifnet loif[NLOOP];
 
 void
-rtems_bsdnet_loopattach(void *dummy)
+rtems_bsdnet_initialize_loop(void)
 {
 	register struct ifnet *ifp;
 	register int i = 0;

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
@@ -40,6 +40,8 @@
 #include <net/netisr.h>
 #include <net/route.h>
 
+#include "loop.h"
+
 /*
  * Sysctl init all.
  */
@@ -99,6 +101,20 @@
 int rtems_bsdnet_ntpserver_count = 0;
 int32_t rtems_bsdnet_timeoffset = 0;
 
+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));
+}
+
 /*
  * Perform FreeBSD memory allocation.
  * FIXME: This should be modified to keep memory allocation statistics.
@@ -315,6 +331,9 @@
 	 * Let other network tasks begin
 	 */
 	rtems_bsdnet_semaphore_release ();
+
+	rtems_bsdnet_initialize_loop();
+
 	return 0;
 }
 
@@ -822,17 +841,81 @@
 	return 0;
 }
 
+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;
+}
+
 static int
 rtems_bsdnet_setup (void)
 {
 	struct rtems_bsdnet_ifconfig *ifp;
-	short flags;
-	struct sockaddr_in address;
-	struct sockaddr_in netmask;
-	struct sockaddr_in broadcast;
-	struct sockaddr_in gateway;
 	int i;
-	int any_if_configured = 0;
+	bool any_if_configured = false;
 
 	/*
 	 * Set local parameters
@@ -864,82 +947,36 @@
 	/*
 	 * Configure interfaces
 	 */
+	any_if_configured |= rtems_bsdnet_setup_interface(
+		"lo0",
+		"127.0.0.1",
+		"255.0.0.0"
+	);
 	for (ifp = rtems_bsdnet_config.ifconfig ; ifp ; ifp = ifp->next) {
 		if (ifp->ip_address == NULL)
 			continue;
 
-		/*
-		 * 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));
-			}
-		}
+		any_if_configured |= rtems_bsdnet_setup_interface(
+			ifp->name,
+			ifp->ip_address,
+			ifp->ip_netmask
+		);
 	}
 
 	/*
 	 * Set default route
 	 */
 	if (rtems_bsdnet_config.gateway && any_if_configured) {
-		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;
+		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);
+
 		gateway.sin_addr.s_addr = inet_addr (rtems_bsdnet_config.gateway);
+
 		if (rtems_bsdnet_rtrequest (
 				RTM_ADD,
 				(struct sockaddr *)&address,


 *sh*:
2010-12-08	Sebastian Huber <Sebastian.Huber at embedded-brains.de>

	* loopback/init.c: Loop back interface will be initialized now during
	normal initialization via rtems_bsdnet_initialize_network().

M  1.182  testsuites/samples/ChangeLog
M   1.11  testsuites/samples/loopback/init.c

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
@@ -1,3 +1,8 @@
+2010-12-08	Sebastian Huber <Sebastian.Huber at embedded-brains.de>
+
+	* loopback/init.c: Loop back interface will be initialized now during
+	normal initialization via rtems_bsdnet_initialize_network().
+
 2010-08-16	Ralf Corsépius <ralf.corsepius at rtems.org>
 
 	* fileio/Makefile.am: Remove AM_CONDITIONAL(LIBCHIP).

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
@@ -44,27 +44,9 @@
 /*
  * Network configuration
  */
-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
-};
 
 struct rtems_bsdnet_config rtems_bsdnet_config = {
-    &loopback_config,       /* Network interface */
+    NULL,                   /* Network interface */
     NULL,                   /* Use fixed network configuration */
     0,                      /* Default network task priority */
     0,                      /* Default mbuf capacity */



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20101208/03c6fbd1/attachment.html>


More information about the vc mailing list