summaryrefslogtreecommitdiffstats
path: root/c/src/exec/libnetworking/rtems
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-09 03:43:47 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-09 03:43:47 +0000
commita0af97d2bfba67f952a59dfb549397d8e110dc2c (patch)
treef3e006050ad0e6bc787f775d891fb801b6ed54b7 /c/src/exec/libnetworking/rtems
parentAdded #define to make this file exactly like its siblings in mpc821 (diff)
downloadrtems-a0af97d2bfba67f952a59dfb549397d8e110dc2c.tar.bz2
Patch from Eric Norum <eric@cls.usask.ca> to add NTP BOOTP support because
EPICS needs a synchronized time-of-day clock. This patch is the changes needed to get NTP server information from a BOOTP server. This patch also adds NTP server information to the network configuration structure, too.
Diffstat (limited to 'c/src/exec/libnetworking/rtems')
-rw-r--r--c/src/exec/libnetworking/rtems/rtems_bsdnet.h4
-rw-r--r--c/src/exec/libnetworking/rtems/rtems_glue.c12
2 files changed, 16 insertions, 0 deletions
diff --git a/c/src/exec/libnetworking/rtems/rtems_bsdnet.h b/c/src/exec/libnetworking/rtems/rtems_bsdnet.h
index 3152099525..b5403d21b0 100644
--- a/c/src/exec/libnetworking/rtems/rtems_bsdnet.h
+++ b/c/src/exec/libnetworking/rtems/rtems_bsdnet.h
@@ -35,6 +35,9 @@
extern struct in_addr rtems_bsdnet_bootp_server_address;
extern char *rtems_bsdnet_bootp_server_name;
extern char *rtems_bsdnet_bootp_boot_file_name;
+extern struct in_addr rtems_bsdnet_ntpserver[];
+extern int rtems_bsdnet_ntpserver_count;
+extern long rtems_bsdnet_timeoffset;
/*
* Manipulate routing tables
@@ -127,6 +130,7 @@ struct rtems_bsdnet_config {
char *gateway; /* BOOTP */
char *log_host; /* BOOTP */
char *name_server[3]; /* BOOTP */
+ char *ntp_server[3]; /* BOOTP */
};
extern struct rtems_bsdnet_config rtems_bsdnet_config;
int rtems_bsdnet_initialize_network (void);
diff --git a/c/src/exec/libnetworking/rtems/rtems_glue.c b/c/src/exec/libnetworking/rtems/rtems_glue.c
index f5a39b1448..b799911861 100644
--- a/c/src/exec/libnetworking/rtems/rtems_glue.c
+++ b/c/src/exec/libnetworking/rtems/rtems_glue.c
@@ -77,6 +77,10 @@ char *rtems_bsdnet_domain_name;
struct in_addr rtems_bsdnet_nameserver[sizeof rtems_bsdnet_config.name_server /
sizeof rtems_bsdnet_config.name_server[0]];
int rtems_bsdnet_nameserver_count;
+struct in_addr rtems_bsdnet_ntpserver[sizeof rtems_bsdnet_config.ntp_server /
+ sizeof rtems_bsdnet_config.ntp_server[0]];
+int rtems_bsdnet_ntpserver_count;
+long rtems_bsdnet_timeoffset;
/*
* Perform FreeBSD memory allocation.
@@ -733,6 +737,7 @@ rtems_bsdnet_setup (void)
struct sockaddr_in broadcast;
struct sockaddr_in gateway;
int i;
+ extern char *strdup (const char *cp);
/*
* Set local parameters
@@ -753,6 +758,13 @@ rtems_bsdnet_setup (void)
rtems_bsdnet_nameserver[rtems_bsdnet_nameserver_count++].s_addr
= inet_addr (rtems_bsdnet_config.name_server[i]);
}
+ for (i = 0 ; i < sizeof rtems_bsdnet_config.ntp_server /
+ sizeof rtems_bsdnet_config.ntp_server[0] ; i++) {
+ if (!rtems_bsdnet_config.ntp_server[i])
+ break;
+ rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count++].s_addr
+ = inet_addr (rtems_bsdnet_config.ntp_server[i]);
+ }
/*
* Configure interfaces