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