Module Name:    src
Committed By:   maxv
Date:           Tue Feb 13 08:43:26 UTC 2018

Modified Files:
        src/sys/net: if_arp.h

Log Message:
Define ar_* as inlined functions, not as macros. Makes it easier to
understand why ARPHRD_IEEE1394 needs to be handled with care - it doesn't
have ar_tha.


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/net/if_arp.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/net/if_arp.h
diff -u src/sys/net/if_arp.h:1.30 src/sys/net/if_arp.h:1.31
--- src/sys/net/if_arp.h:1.30	Mon Aug 31 08:05:20 2015
+++ src/sys/net/if_arp.h	Tue Feb 13 08:43:26 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_arp.h,v 1.30 2015/08/31 08:05:20 ozaki-r Exp $	*/
+/*	$NetBSD: if_arp.h,v 1.31 2018/02/13 08:43:26 maxv Exp $	*/
 
 /*
  * Copyright (c) 1986, 1993
@@ -68,20 +68,43 @@ struct	arphdr {
 #ifdef COMMENT_ONLY
 	uint8_t  ar_sha[];	/* sender hardware address */
 	uint8_t  ar_spa[];	/* sender protocol address */
-	uint8_t  ar_tha[];	/* target hardware address */
+	uint8_t  ar_tha[];	/* target hardware address (!IEEE1394) */
 	uint8_t  ar_tpa[];	/* target protocol address */
 #endif
-#define ar_sha(ap) (((char *)((ap)+1))+0)
-#define ar_spa(ap) (((char *)((ap)+1))+(ap)->ar_hln)
-#define ar_tha(ap) \
-	(ntohs((ap)->ar_hrd) == ARPHRD_IEEE1394 \
-		? NULL : (((char *)((ap)+1))+(ap)->ar_hln+(ap)->ar_pln))
-#define ar_tpa(ap) \
-	(ntohs((ap)->ar_hrd) == ARPHRD_IEEE1394 \
-		? (((char *)((ap)+1))+(ap)->ar_hln+(ap)->ar_pln) \
-		: (((char *)((ap)+1))+(ap)->ar_hln+(ap)->ar_pln+(ap)->ar_hln))
 } __packed;
 
+static inline uint8_t *
+ar_sha(struct arphdr *ap)
+{
+	return ((uint8_t *)(ap + 1)) + 0;
+}
+
+static inline uint8_t *
+ar_spa(struct arphdr *ap)
+{
+	return ((uint8_t *)(ap + 1)) + ap->ar_hln;
+}
+
+static inline uint8_t *
+ar_tha(struct arphdr *ap)
+{
+	if (ntohs(ap->ar_hrd) == ARPHRD_IEEE1394) {
+		return NULL;
+	} else {
+		return ((uint8_t *)(ap + 1)) + ap->ar_hln + ap->ar_pln;
+	}
+}
+
+static inline uint8_t *
+ar_tpa(struct arphdr *ap)
+{
+	if (ntohs(ap->ar_hrd) == ARPHRD_IEEE1394) {
+		return ((uint8_t *)(ap + 1)) + ap->ar_hln + ap->ar_pln;
+	} else {
+		return ((uint8_t *)(ap + 1)) + ap->ar_hln + ap->ar_pln +
+		    ap->ar_hln;
+	}
+}
 
 /*
  * ARP ioctl request

Reply via email to