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