#define UAL_UAL(x,y) *(unsigned long *) &(x[0]) = *(unsigned long *) &(y[0])
#define UAL_VALUE(x) (*(unsigned long *) &(x[0]))
+/* Macros to assign unaligned fields with byte swapping */
+#define UAS_ASSIGN_HTON(x,s) *(unsigned short *) &(x[0]) = htons((unsigned short) (s))
+#define UAS_ASSIGN_NTOH(x,s) *(unsigned short *) &(x[0]) = ntohs((unsigned short) (s))
+#define UAS_VALUE_HTON(x) htons((*(unsigned short *) &(x[0])))
+#define UAS_VALUE_NTOH(x) ntohs((*(unsigned short *) &(x[0])))
+#define UAL_ASSIGN_HTON(x,l) *(unsigned long *) &(x[0]) = htonl((unsigned long) (l))
+#define UAL_ASSIGN_NTOH(x,l) *(unsigned long *) &(x[0]) = ntohl((unsigned long) (l))
+#define UAL_VALUE_HTON(x) htonl((*(unsigned long *) &(x[0])))
+#define UAL_VALUE_NTOH(x) ntohl((*(unsigned long *) &(x[0])))
+
/* Macros to manipulate at_net variables */
-#define NET_ASSIGN(x,s) *(unsigned short *)&(x[0]) = (unsigned short)(s)
-#define NET_NET(x, y) *(unsigned short *)&(x[0]) = *(unsigned short *)&(y[0])
-#define NET_VALUE(x) (*(unsigned short *) &(x[0]))
+#define NET_ASSIGN(x,s) *(unsigned short *)&(x[0]) = htons((unsigned short)(s))
+#define NET_ASSIGN_NOSWAP(x,s) *(unsigned short *)&(x[0]) = (unsigned short)(s)
+#define NET_NET(x, y) *(unsigned short *)&(x[0]) = *(unsigned short *)&(y[0])
+#define NET_VALUE(x) ntohs((*(unsigned short *) &(x[0])))
+#define NET_VALUE_NOSWAP(x) (*(unsigned short *) &(x[0]))
#define ATALK_ASSIGN(a, net, node, unused ) \
a.atalk_unused = unused; a.atalk_node = node; NET_ASSIGN(a.atalk_net, net)
#define IFID_HOME 1 /* home port in ifID_table */
#define ATALK_VALUE(a) ((*(u_long *) &(a))&0x00ffffff)
-#define ATALK_EQUAL(a, b) (ATALK_VALUE(a) == ATALK_VALUE(b))
#define VERSION_LENGTH 80 /* length of version string */