summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/include/gpxe/ip.h2
-rw-r--r--src/proto/ip.c28
2 files changed, 30 insertions, 0 deletions
diff --git a/src/include/gpxe/ip.h b/src/include/gpxe/ip.h
index 3a9716879..29aae5176 100644
--- a/src/include/gpxe/ip.h
+++ b/src/include/gpxe/ip.h
@@ -12,6 +12,8 @@
#include <gpxe/in.h>
extern void set_ipaddr ( struct in_addr address );
+extern void set_netmask ( struct in_addr address );
+extern void set_gateway ( struct in_addr address );
extern void init_tcpip ( void );
extern void run_tcpip ( void );
diff --git a/src/proto/ip.c b/src/proto/ip.c
index 3f46377c4..a0f36d746 100644
--- a/src/proto/ip.c
+++ b/src/proto/ip.c
@@ -32,6 +32,34 @@ void set_ipaddr ( struct in_addr address ) {
}
/**
+ * Set netmask
+ *
+ */
+void set_netmask ( struct in_addr address ) {
+ union {
+ struct in_addr address;
+ uint16_t uip_address[2];
+ } u;
+
+ u.address = address;
+ uip_setnetmask ( u.uip_address );
+}
+
+/**
+ * Set default gateway
+ *
+ */
+void set_gateway ( struct in_addr address ) {
+ union {
+ struct in_addr address;
+ uint16_t uip_address[2];
+ } u;
+
+ u.address = address;
+ uip_setdraddr ( u.uip_address );
+}
+
+/**
* Initialise TCP/IP stack
*
*/