summaryrefslogtreecommitdiffstats
path: root/src/net
diff options
context:
space:
mode:
authorMarty Connor2007-07-02 21:36:19 +0200
committerMarty Connor2007-07-02 21:36:19 +0200
commit0297a63877f7d45fab0f67786866096a1e3f87f4 (patch)
tree65bae097355bb80074d6515bb898a818f93331b4 /src/net
parentWarnings purge (diff)
parentAdd untested support for UNDI transmit and receive. (diff)
downloadipxe-0297a63877f7d45fab0f67786866096a1e3f87f4.tar.gz
ipxe-0297a63877f7d45fab0f67786866096a1e3f87f4.tar.xz
ipxe-0297a63877f7d45fab0f67786866096a1e3f87f4.zip
Merge branch 'master' of ssh://rom.etherboot.org/pub/scm/gpxe
Diffstat (limited to 'src/net')
-rw-r--r--src/net/arp.c3
-rw-r--r--src/net/ethernet.c1
-rw-r--r--src/net/rarp.c68
3 files changed, 70 insertions, 2 deletions
diff --git a/src/net/arp.c b/src/net/arp.c
index 383dc842a..011d4fefb 100644
--- a/src/net/arp.c
+++ b/src/net/arp.c
@@ -281,8 +281,7 @@ static int arp_rx ( struct io_buffer *iobuf, struct net_device *netdev,
*
* This operation is meaningless for the ARP protocol.
*/
-static const char *
-arp_ntoa ( const void *net_addr __attribute__ (( unused )) ) {
+static const char * arp_ntoa ( const void *net_addr __unused ) {
return "<ARP>";
}
diff --git a/src/net/ethernet.c b/src/net/ethernet.c
index 7108beff0..8f259fb39 100644
--- a/src/net/ethernet.c
+++ b/src/net/ethernet.c
@@ -108,6 +108,7 @@ struct ll_protocol ethernet_protocol __ll_protocol = {
.name = "Ethernet",
.ll_proto = htons ( ARPHRD_ETHER ),
.ll_addr_len = ETH_ALEN,
+ .ll_header_len = ETH_HLEN,
.ll_broadcast = eth_broadcast,
.tx = eth_tx,
.rx = eth_rx,
diff --git a/src/net/rarp.c b/src/net/rarp.c
new file mode 100644
index 000000000..bb5e6ad76
--- /dev/null
+++ b/src/net/rarp.c
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2007 Michael Brown <mbrown@fensystems.co.uk>.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <stdint.h>
+#include <byteswap.h>
+#include <gpxe/netdevice.h>
+#include <gpxe/iobuf.h>
+#include <gpxe/if_ether.h>
+#include <gpxe/rarp.h>
+
+/** @file
+ *
+ * Reverse Address Resolution Protocol
+ *
+ */
+
+/**
+ * Process incoming ARP packets
+ *
+ * @v iobuf I/O buffer
+ * @v netdev Network device
+ * @v ll_source Link-layer source address
+ * @ret rc Return status code
+ *
+ * This is a dummy method which simply discards RARP packets.
+ */
+static int rarp_rx ( struct io_buffer *iobuf,
+ struct net_device *netdev __unused,
+ const void *ll_source __unused ) {
+ free_iob ( iobuf );
+ return 0;
+}
+
+
+/**
+ * Transcribe RARP address
+ *
+ * @v net_addr RARP address
+ * @ret string "<RARP>"
+ *
+ * This operation is meaningless for the RARP protocol.
+ */
+static const char * rarp_ntoa ( const void *net_addr __unused ) {
+ return "<RARP>";
+}
+
+/** RARP protocol */
+struct net_protocol rarp_protocol __net_protocol = {
+ .name = "RARP",
+ .net_proto = htons ( ETH_P_RARP ),
+ .rx = rarp_rx,
+ .ntoa = rarp_ntoa,
+};