struct dn_naddr 
 {
-       unsigned short          a_len;
-       unsigned char a_addr[DN_MAXADDL];
+       __le16          a_len;
+       __u8 a_addr[DN_MAXADDL]; /* Two bytes little endian */
 };
 
 struct sockaddr_dn
 {
-       unsigned short          sdn_family;
-       unsigned char           sdn_flags;
-       unsigned char           sdn_objnum;
-       unsigned short          sdn_objnamel;
-       unsigned char           sdn_objname[DN_MAXOBJL];
+       __u16           sdn_family;
+       __u8            sdn_flags;
+       __u8            sdn_objnum;
+       __le16          sdn_objnamel;
+       __u8            sdn_objname[DN_MAXOBJL];
        struct   dn_naddr       sdn_add;
 };
 #define sdn_nodeaddrl   sdn_add.a_len   /* Node address length  */
  * DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure
  */
 struct optdata_dn {
-        unsigned short  opt_status;     /* Extended status return */
+        __le16  opt_status;     /* Extended status return */
 #define opt_sts opt_status
-        unsigned short  opt_optl;       /* Length of user data    */
-        unsigned char   opt_data[16];   /* User data              */
+        __le16  opt_optl;       /* Length of user data    */
+        __u8   opt_data[16];   /* User data              */
 };
 
 struct accessdata_dn
 {
-       unsigned char           acc_accl;
-       unsigned char           acc_acc[DN_MAXACCL];
-       unsigned char           acc_passl;
-       unsigned char           acc_pass[DN_MAXACCL];
-       unsigned char           acc_userl;
-       unsigned char           acc_user[DN_MAXACCL];
+       __u8            acc_accl;
+       __u8            acc_acc[DN_MAXACCL];
+       __u8            acc_passl;
+       __u8            acc_pass[DN_MAXACCL];
+       __u8            acc_userl;
+       __u8            acc_user[DN_MAXACCL];
 };
 
 /*
  * DECnet logical link information structure
  */
 struct linkinfo_dn {
-        unsigned short  idn_segsize;    /* Segment size for link */
-        unsigned char   idn_linkstate;  /* Logical link state    */
+        __le16  idn_segsize;    /* Segment size for link */
+        __u8   idn_linkstate;  /* Logical link state    */
 };
 
 /*
  * Ethernet address format (for DECnet)
  */
 union etheraddress {
-        unsigned char dne_addr[6];             /* Full ethernet address */
+        __u8 dne_addr[6];             /* Full ethernet address */
   struct {
-                unsigned char dne_hiord[4];    /* DECnet HIORD prefix   */
-                unsigned char dne_nodeaddr[2]; /* DECnet node address   */
+                __u8 dne_hiord[4];    /* DECnet HIORD prefix   */
+                __u8 dne_nodeaddr[2]; /* DECnet node address   */
   } dne_remote;
 };
 
  * DECnet physical socket address format
  */
 struct dn_addr {
-        unsigned short dna_family;      /* AF_DECnet               */
+        __le16 dna_family;      /* AF_DECnet               */
         union etheraddress dna_netaddr; /* DECnet ethernet address */
 };
 
 
 #include <net/tcp.h>
 #include <asm/byteorder.h>
 
-typedef unsigned short dn_address;
-
-#define dn_ntohs(x) le16_to_cpu((unsigned short)(x))
-#define dn_htons(x) cpu_to_le16((unsigned short)(x))
+#define dn_ntohs(x) le16_to_cpu(x)
+#define dn_htons(x) cpu_to_le16(x)
 
 struct dn_scp                                   /* Session Control Port */
 {
 #define DN_CL    15                     /* Closed               */
 #define DN_CN    16                     /* Closed Notification  */
 
-        unsigned short          addrloc;
-        unsigned short          addrrem;
-        unsigned short          numdat;
-        unsigned short          numoth;
-        unsigned short          numoth_rcv;
-        unsigned short          numdat_rcv;
-        unsigned short          ackxmt_dat;
-        unsigned short          ackxmt_oth;
-        unsigned short          ackrcv_dat;
-        unsigned short          ackrcv_oth;
-        unsigned char           flowrem_sw;
-       unsigned char           flowloc_sw;
+        __le16          addrloc;
+        __le16          addrrem;
+        __u16          numdat;
+        __u16          numoth;
+        __u16          numoth_rcv;
+        __u16          numdat_rcv;
+        __u16          ackxmt_dat;
+        __u16          ackxmt_oth;
+        __u16          ackrcv_dat;
+        __u16          ackrcv_oth;
+        __u8           flowrem_sw;
+       __u8           flowloc_sw;
 #define DN_SEND         2
 #define DN_DONTSEND     1
 #define DN_NOCHANGE     0
-       unsigned short          flowrem_dat;
-       unsigned short          flowrem_oth;
-       unsigned short          flowloc_dat;
-       unsigned short          flowloc_oth;
-       unsigned char           services_rem;
-       unsigned char           services_loc;
-       unsigned char           info_rem;
-       unsigned char           info_loc;
-
-       unsigned short          segsize_rem;
-       unsigned short          segsize_loc;
-
-       unsigned char           nonagle;
-       unsigned char           multi_ireq;
-       unsigned char           accept_mode;
+       __u16           flowrem_dat;
+       __u16           flowrem_oth;
+       __u16           flowloc_dat;
+       __u16           flowloc_oth;
+       __u8            services_rem;
+       __u8            services_loc;
+       __u8            info_rem;
+       __u8            info_loc;
+
+       __u16           segsize_rem;
+       __u16           segsize_loc;
+
+       __u8            nonagle;
+       __u8            multi_ireq;
+       __u8            accept_mode;
        unsigned long           seg_total; /* Running total of current segment */
 
        struct optdata_dn     conndata_in;
  */
 #define DN_SKB_CB(skb) ((struct dn_skb_cb *)(skb)->cb)
 struct dn_skb_cb {
-       unsigned short dst;
-       unsigned short src;
-       unsigned short hops;
-       unsigned short dst_port;
-       unsigned short src_port;
-       unsigned char services;
-       unsigned char info;
-       unsigned char rt_flags;
-       unsigned char nsp_flags;
-       unsigned short segsize;
-       unsigned short segnum;
-       unsigned short xmit_count;
+       __le16 dst;
+       __le16 src;
+       __u16 hops;
+       __le16 dst_port;
+       __le16 src_port;
+       __u8 services;
+       __u8 info;
+       __u8 rt_flags;
+       __u8 nsp_flags;
+       __u16 segsize;
+       __u16 segnum;
+       __u16 xmit_count;
        unsigned long stamp;
        int iif;
 };
 
-static inline dn_address dn_eth2dn(unsigned char *ethaddr)
+static inline __le16 dn_eth2dn(unsigned char *ethaddr)
 {
-       return ethaddr[4] | (ethaddr[5] << 8);
+       return dn_htons(ethaddr[4] | (ethaddr[5] << 8));
 }
 
-static inline dn_address dn_saddr2dn(struct sockaddr_dn *saddr)
+static inline __le16 dn_saddr2dn(struct sockaddr_dn *saddr)
 {
-       return *(dn_address *)saddr->sdn_nodeaddr;
+       return *(__le16 *)saddr->sdn_nodeaddr;
 }
 
-static inline void dn_dn2eth(unsigned char *ethaddr, dn_address addr)
+static inline void dn_dn2eth(unsigned char *ethaddr, __le16 addr)
 {
+       __u16 a = dn_ntohs(addr);
        ethaddr[0] = 0xAA;
        ethaddr[1] = 0x00;
        ethaddr[2] = 0x04;
        ethaddr[3] = 0x00;
-       ethaddr[4] = (unsigned char)(addr & 0xff);
-       ethaddr[5] = (unsigned char)(addr >> 8);
+       ethaddr[4] = (__u8)(a & 0xff);
+       ethaddr[5] = (__u8)(a >> 8);
 }
 
 static inline void dn_sk_ports_copy(struct flowi *fl, struct dn_scp *scp)
        fl->uli_u.dnports.dport = scp->addrrem;
        fl->uli_u.dnports.objnum = scp->addr.sdn_objnum;
        if (fl->uli_u.dnports.objnum == 0) {
-               fl->uli_u.dnports.objnamel = scp->addr.sdn_objnamel;
+               fl->uli_u.dnports.objnamel = (__u8)dn_ntohs(scp->addr.sdn_objnamel);
                memcpy(fl->uli_u.dnports.objname, scp->addr.sdn_objname, 16);
        }
 }
 extern struct sock *dn_sklist_find_listener(struct sockaddr_dn *addr);
 extern struct sock *dn_find_by_skb(struct sk_buff *skb);
 #define DN_ASCBUF_LEN 9
-extern char *dn_addr2asc(dn_address, char *);
+extern char *dn_addr2asc(__u16, char *);
 extern int dn_destroy_timer(struct sock *sk);
 
 extern int dn_sockaddr2username(struct sockaddr_dn *addr, unsigned char *buf, unsigned char type);
 extern void dn_start_slow_timer(struct sock *sk);
 extern void dn_stop_slow_timer(struct sock *sk);
 
-extern dn_address decnet_address;
+extern __le16 decnet_address;
 extern int decnet_debug_level;
 extern int decnet_time_wait;
 extern int decnet_dn_count;
 
 struct dn_ifaddr {
        struct dn_ifaddr *ifa_next;
        struct dn_dev    *ifa_dev;
-       dn_address       ifa_local;
-       dn_address       ifa_address;
-       unsigned char    ifa_flags;
-       unsigned char    ifa_scope;
-       char             ifa_label[IFNAMSIZ];
+       __le16            ifa_local;
+       __le16            ifa_address;
+       __u8              ifa_flags;
+       __u8              ifa_scope;
+       char              ifa_label[IFNAMSIZ];
 };
 
 #define DN_DEV_S_RU  0 /* Run - working normally   */
        struct timer_list timer;
        unsigned long t3;
        struct neigh_parms *neigh_parms;
-       unsigned char addr[ETH_ALEN];
+       __u8 addr[ETH_ALEN];
        struct neighbour *router; /* Default router on circuit */
        struct neighbour *peer;   /* Peer on pointopoint links */
        unsigned long uptime;     /* Time device went up in jiffies */
 
 struct dn_short_packet
 {
-       unsigned char   msgflg;
-       unsigned short  dstnode;
-       unsigned short  srcnode;
-       unsigned char   forward;
+       __u8    msgflg;
+       __le16 dstnode;
+       __le16 srcnode;
+       __u8   forward;
 } __attribute__((packed));
 
 struct dn_long_packet
 {
-       unsigned char   msgflg;
-       unsigned char   d_area;
-       unsigned char   d_subarea;
-       unsigned char   d_id[6];
-       unsigned char   s_area;
-       unsigned char   s_subarea;
-       unsigned char   s_id[6];
-       unsigned char   nl2;
-       unsigned char   visit_ct;
-       unsigned char   s_class;
-       unsigned char   pt;
+       __u8   msgflg;
+       __u8   d_area;
+       __u8   d_subarea;
+       __u8   d_id[6];
+       __u8   s_area;
+       __u8   s_subarea;
+       __u8   s_id[6];
+       __u8   nl2;
+       __u8   visit_ct;
+       __u8   s_class;
+       __u8   pt;
 } __attribute__((packed));
 
 /*------------------------- DRP - Routing messages ---------------------*/
 
 struct endnode_hello_message
 {
-       unsigned char   msgflg;
-       unsigned char   tiver[3];
-       unsigned char   id[6];
-       unsigned char   iinfo;
-       unsigned short  blksize;
-       unsigned char   area;
-       unsigned char   seed[8];
-       unsigned char   neighbor[6];
-       unsigned short  timer;
-       unsigned char   mpd;
-       unsigned char   datalen;
-       unsigned char   data[2];
+       __u8   msgflg;
+       __u8   tiver[3];
+       __u8   id[6];
+       __u8   iinfo;
+       __le16 blksize;
+       __u8   area;
+       __u8   seed[8];
+       __u8   neighbor[6];
+       __le16 timer;
+       __u8   mpd;
+       __u8   datalen;
+       __u8   data[2];
 } __attribute__((packed));
 
 struct rtnode_hello_message
 {
-       unsigned char   msgflg;
-       unsigned char   tiver[3];
-       unsigned char   id[6];
-       unsigned char   iinfo;
-       unsigned short  blksize;
-       unsigned char   priority;
-       unsigned char   area;
-       unsigned short  timer;
-       unsigned char   mpd;
+       __u8   msgflg;
+       __u8   tiver[3];
+       __u8   id[6];
+       __u8   iinfo;
+       __le16  blksize;
+       __u8   priority;
+       __u8   area;
+       __le16  timer;
+       __u8   mpd;
 } __attribute__((packed));
 
 
 
 extern int dn_dev_set_default(struct net_device *dev, int force);
 extern struct net_device *dn_dev_get_default(void);
-extern int dn_dev_bind_default(dn_address *addr);
+extern int dn_dev_bind_default(__le16 *addr);
 
 extern int register_dnaddr_notifier(struct notifier_block *nb);
 extern int unregister_dnaddr_notifier(struct notifier_block *nb);
 
-static inline int dn_dev_islocal(struct net_device *dev, dn_address addr)
+static inline int dn_dev_islocal(struct net_device *dev, __le16 addr)
 {
        struct dn_dev *dn_db = dev->dn_ptr;
        struct dn_ifaddr *ifa;
 
        int                     nh_weight;
        int                     nh_power;
        int                     nh_oif;
-       u32                     nh_gw;
+       __le16                  nh_gw;
 };
 
 struct dn_fib_info {
        int                     fib_dead;
        unsigned                fib_flags;
        int                     fib_protocol;
-       dn_address              fib_prefsrc;
+       __le16                  fib_prefsrc;
        __u32                   fib_priority;
        __u32                   fib_metrics[RTAX_MAX];
 #define dn_fib_mtu  fib_metrics[RTAX_MTU-1]
 #define DN_FIB_RES_OIF(res)    (DN_FIB_RES_NH(res).nh_oif)
 
 typedef struct {
-       u16     datum;
+       __le16  datum;
 } dn_fib_key_t;
 
 typedef struct {
-       u16     datum;
+       __le16  datum;
 } dn_fib_hash_t;
 
 typedef struct {
-       u16     datum;
+       __u16   datum;
 } dn_fib_idx_t;
 
 struct dn_fib_node {
                        const struct flowi *fl,
                        struct dn_fib_res *res);
 extern void dn_fib_release_info(struct dn_fib_info *fi);
-extern u16 dn_fib_get_attr16(struct rtattr *attr, int attrlen, int type);
+extern __le16 dn_fib_get_attr16(struct rtattr *attr, int attrlen, int type);
 extern void dn_fib_flush(void);
 extern void dn_fib_select_multipath(const struct flowi *fl,
                                        struct dn_fib_res *res);
-extern int dn_fib_sync_down(dn_address local, struct net_device *dev, 
+extern int dn_fib_sync_down(__le16 local, struct net_device *dev,
                                int force);
 extern int dn_fib_sync_up(struct net_device *dev);
 
 extern void dn_fib_rules_init(void);
 extern void dn_fib_rules_cleanup(void);
 extern void dn_fib_rule_put(struct dn_fib_rule *);
-extern __u16 dn_fib_rules_policy(__u16 saddr, struct dn_fib_res *res, unsigned *flags);
-extern unsigned dnet_addr_type(__u16 addr);
+extern __le16 dn_fib_rules_policy(__le16 saddr, struct dn_fib_res *res, unsigned *flags);
+extern unsigned dnet_addr_type(__le16 addr);
 extern int dn_fib_lookup(const struct flowi *fl, struct dn_fib_res *res);
 
 /*
 
 #endif /* CONFIG_DECNET_ROUTER */
 
-static inline u16 dnet_make_mask(int n)
+static inline __le16 dnet_make_mask(int n)
 {
         if (n)
-                return htons(~((1<<(16-n))-1));
+                return dn_htons(~((1<<(16-n))-1));
         return 0;
 }
 
 
  */
 struct dn_neigh {
         struct neighbour n;
-       dn_address addr;
+       __le16 addr;
         unsigned long flags;
 #define DN_NDFLAG_R1    0x0001 /* Router L1      */
 #define DN_NDFLAG_R2    0x0002 /* Router L2      */
 #define DN_NDFLAG_P3    0x0004 /* Phase III Node */
         unsigned long blksize;
-       unsigned char priority;
+       __u8 priority;
 };
 
 extern void dn_neigh_init(void);
 
 
 struct nsp_data_seg_msg
 {
-       unsigned char   msgflg;
-       unsigned short  dstaddr;
-       unsigned short  srcaddr;
+       __u8   msgflg;
+       __le16 dstaddr;
+       __le16 srcaddr;
 } __attribute__((packed));
 
 struct nsp_data_opt_msg
 {
-       unsigned short  acknum;
-       unsigned short  segnum;
-       unsigned short  lsflgs;
+       __le16 acknum;
+       __le16 segnum;
+       __le16 lsflgs;
 } __attribute__((packed));
 
 struct nsp_data_opt_msg1
 {
-       unsigned short  acknum;
-       unsigned short  segnum;
+       __le16 acknum;
+       __le16 segnum;
 } __attribute__((packed));
 
 
 /* Acknowledgment Message (data/other data)                             */
 struct nsp_data_ack_msg
 {
-       unsigned char   msgflg;
-       unsigned short  dstaddr;
-       unsigned short  srcaddr;
-       unsigned short  acknum;
+       __u8   msgflg;
+       __le16 dstaddr;
+       __le16 srcaddr;
+       __le16 acknum;
 } __attribute__((packed));
 
 /* Connect Acknowledgment Message */
 struct  nsp_conn_ack_msg
 {
-       unsigned char   msgflg;
-       unsigned short  dstaddr;
+       __u8 msgflg;
+       __le16 dstaddr;
 } __attribute__((packed));
 
 
 /* Connect Initiate/Retransmit Initiate/Connect Confirm */
 struct  nsp_conn_init_msg
 {
-       unsigned char   msgflg;
+       __u8   msgflg;
 #define NSP_CI      0x18            /* Connect Initiate     */
 #define NSP_RCI     0x68            /* Retrans. Conn Init   */
-       unsigned short  dstaddr;
-       unsigned short  srcaddr;
-       unsigned char   services;
+       __le16 dstaddr;
+       __le16 srcaddr;
+       __u8   services;
 #define NSP_FC_NONE   0x00            /* Flow Control None    */
 #define NSP_FC_SRC    0x04            /* Seg Req. Count       */
 #define NSP_FC_SCMC   0x08            /* Sess. Control Mess   */
 #define NSP_FC_MASK   0x0c            /* FC type mask         */
-       unsigned char   info;
-       unsigned short  segsize;
+       __u8   info;
+       __le16 segsize;
 } __attribute__((packed));
 
 /* Disconnect Initiate/Disconnect Confirm */
 struct  nsp_disconn_init_msg
 {
-       unsigned char   msgflg;
-       unsigned short  dstaddr;
-       unsigned short  srcaddr;
-       unsigned short  reason;
+       __u8   msgflg;
+       __le16 dstaddr;
+       __le16 srcaddr;
+       __le16 reason;
 } __attribute__((packed));
 
 
 
 struct  srcobj_fmt
 {
-       char            format;
-       unsigned char   task;
-       unsigned short  grpcode;
-       unsigned short  usrcode;
-       char            dlen;
+       __u8   format;
+       __u8   task;
+       __le16 grpcode;
+       __le16 usrcode;
+       __u8   dlen;
 } __attribute__((packed));
 
 /*
  * numbers used in NSP. Similar in operation to the functions
  * of the same name in TCP.
  */
-static __inline__ int dn_before(unsigned short seq1, unsigned short seq2)
+static __inline__ int dn_before(__u16 seq1, __u16 seq2)
 {
         seq1 &= 0x0fff;
         seq2 &= 0x0fff;
 }
 
 
-static __inline__ int dn_after(unsigned short seq1, unsigned short seq2)
+static __inline__ int dn_after(__u16 seq1, __u16 seq2)
 {
         seq1 &= 0x0fff;
         seq2 &= 0x0fff;
         return (int)((seq2 - seq1) & 0x0fff) > 2048;
 }
 
-static __inline__ int dn_equal(unsigned short seq1, unsigned short seq2)
+static __inline__ int dn_equal(__u16 seq1, __u16 seq2)
 {
         return ((seq1 ^ seq2) & 0x0fff) == 0;
 }
 
-static __inline__ int dn_before_or_equal(unsigned short seq1, unsigned short seq2)
+static __inline__ int dn_before_or_equal(__u16 seq1, __u16 seq2)
 {
        return (dn_before(seq1, seq2) || dn_equal(seq1, seq2));
 }
 
-static __inline__ void seq_add(unsigned short *seq, unsigned short off)
+static __inline__ void seq_add(__u16 *seq, __u16 off)
 {
         (*seq) += off;
         (*seq) &= 0x0fff;
 }
 
-static __inline__ int seq_next(unsigned short seq1, unsigned short seq2)
+static __inline__ int seq_next(__u16 seq1, __u16 seq2)
 {
        return dn_equal(seq1 + 1, seq2);
 }
 /*
  * Can we delay the ack ?
  */
-static __inline__ int sendack(unsigned short seq)
+static __inline__ int sendack(__u16 seq)
 {
         return (int)((seq & 0x1000) ? 0 : 1);
 }
 
                struct dn_route *rt_next;
        } u;
 
-       __u16 rt_saddr;
-       __u16 rt_daddr;
-       __u16 rt_gateway;
-       __u16 rt_local_src;     /* Source used for forwarding packets */
-       __u16 rt_src_map;
-       __u16 rt_dst_map;
+       __le16 rt_saddr;
+       __le16 rt_daddr;
+       __le16 rt_gateway;
+       __le16 rt_local_src;    /* Source used for forwarding packets */
+       __le16 rt_src_map;
+       __le16 rt_dst_map;
 
        unsigned rt_flags;
        unsigned rt_type;
 
                } ip6_u;
 
                struct {
-                       __u16                   daddr;
-                       __u16                   saddr;
+                       __le16                  daddr;
+                       __le16                  saddr;
                        __u32                   fwmark;
                        __u8                    scope;
                } dn_u;
                } icmpt;
 
                struct {
-                       __u16   sport;
-                       __u16   dport;
+                       __le16  sport;
+                       __le16  dport;
                        __u8    objnum;
                        __u8    objnamel; /* Not 16 bits since max val is 16 */
                        __u8    objname[16]; /* Not zero terminated */
 
 /* 
  * Valid ports are those greater than zero and not already in use.
  */
-static int check_port(unsigned short port)
+static int check_port(__le16 port)
 {
        struct sock *sk;
        struct hlist_node *node;
        }
 }
 
-char *dn_addr2asc(dn_address addr, char *buf)
+char *dn_addr2asc(__u16 addr, char *buf)
 {
        unsigned short node, area;
 
        /* End of compatibility stuff */
 
        scp->addr.sdn_add.a_len = dn_htons(2);
-       rv = dn_dev_bind_default((dn_address *)scp->addr.sdn_add.a_addr);
+       rv = dn_dev_bind_default((__le16 *)scp->addr.sdn_add.a_addr);
        if (rv == 0) {
                rv = dn_hash_sock(sk);
                if (rv)
         opt->opt_optl   = *ptr++;
         opt->opt_status = 0;
         memcpy(opt->opt_data, ptr, opt->opt_optl);
-        skb_pull(skb, opt->opt_optl + 1);
+        skb_pull(skb, dn_ntohs(opt->opt_optl) + 1);
 
 }
 
 
        skb_pull(skb, dn_username2sockaddr(skb->data, skb->len, &(DN_SK(newsk)->addr), &type));
        skb_pull(skb, dn_username2sockaddr(skb->data, skb->len, &(DN_SK(newsk)->peer), &type));
-       *(dn_address *)(DN_SK(newsk)->peer.sdn_add.a_addr) = cb->src;
-       *(dn_address *)(DN_SK(newsk)->addr.sdn_add.a_addr) = cb->dst;
+       *(__le16 *)(DN_SK(newsk)->peer.sdn_add.a_addr) = cb->src;
+       *(__le16 *)(DN_SK(newsk)->addr.sdn_add.a_addr) = cb->dst;
 
        menuver = *skb->data;
        skb_pull(skb, 1);
                        if (optlen != sizeof(struct optdata_dn))
                                return -EINVAL;
 
-                       if (u.opt.opt_optl > 16)
+                       if (dn_ntohs(u.opt.opt_optl) > 16)
                                return -EINVAL;
 
                        memcpy(&scp->conndata_out, &u.opt, optlen);
                        if (optlen != sizeof(struct optdata_dn))
                                return -EINVAL;
 
-                       if (u.opt.opt_optl > 16)
+                       if (dn_ntohs(u.opt.opt_optl) > 16)
                                return -EINVAL;
 
                        memcpy(&scp->discdata_out, &u.opt, optlen);
 
 /*
  * decnet_address is kept in network order.
  */
-dn_address decnet_address = 0;
+__le16 decnet_address = 0;
 
 static DEFINE_RWLOCK(dndev_lock);
 static struct net_device *decnet_default_device;
        *ifap = ifa1->ifa_next;
 
        if (dn_db->dev->type == ARPHRD_ETHER) {
-               if (ifa1->ifa_local != dn_htons(dn_eth2dn(dev->dev_addr))) {
+               if (ifa1->ifa_local != dn_eth2dn(dev->dev_addr)) {
                        dn_dn2eth(mac_addr, ifa1->ifa_local);
                        dev_mc_delete(dev, mac_addr, ETH_ALEN, 0);
                }
        }
 
        if (dev->type == ARPHRD_ETHER) {
-               if (ifa->ifa_local != dn_htons(dn_eth2dn(dev->dev_addr))) {
+               if (ifa->ifa_local != dn_eth2dn(dev->dev_addr)) {
                        dn_dn2eth(mac_addr, ifa->ifa_local);
                        dev_mc_add(dev, mac_addr, ETH_ALEN, 0);
                        dev_mc_upload(dev);
 
        switch(cmd) {
                case SIOCGIFADDR:
-                       *((dn_address *)sdn->sdn_nodeaddr) = ifa->ifa_local;
+                       *((__le16 *)sdn->sdn_nodeaddr) = ifa->ifa_local;
                        goto rarok;
 
                case SIOCSIFADDR:
        return skb->len;
 }
 
-static int dn_dev_get_first(struct net_device *dev, dn_address *addr)
+static int dn_dev_get_first(struct net_device *dev, __le16 *addr)
 {
        struct dn_dev *dn_db = (struct dn_dev *)dev->dn_ptr;
        struct dn_ifaddr *ifa;
  * a sensible default. Eventually the routing code will take care of all the
  * nasties for us I hope.
  */
-int dn_dev_bind_default(dn_address *addr)
+int dn_dev_bind_default(__le16 *addr)
 {
        struct net_device *dev;
        int rv;
 {
         struct endnode_hello_message *msg;
         struct sk_buff *skb = NULL;
-        unsigned short int *pktlen;
+        __le16 *pktlen;
        struct dn_dev *dn_db = (struct dn_dev *)dev->dn_ptr;
 
         if ((skb = dn_alloc_skb(NULL, sizeof(*msg), GFP_ATOMIC)) == NULL)
         msg->datalen = 0x02;
         memset(msg->data, 0xAA, 2);
         
-        pktlen = (unsigned short *)skb_push(skb,2);
+        pktlen = (__le16 *)skb_push(skb,2);
         *pktlen = dn_htons(skb->len - 2);
 
        skb->nh.raw = skb->data;
        size_t size;
        unsigned char *ptr;
        unsigned char *i1, *i2;
-       unsigned short *pktlen;
+       __le16 *pktlen;
        char *src;
 
        if (mtu2blksize(dev) < (26 + 7))
        ptr += ETH_ALEN;
        *ptr++ = dn_db->parms.forwarding == 1 ? 
                        DN_RT_INFO_L1RT : DN_RT_INFO_L2RT;
-       *((unsigned short *)ptr) = dn_htons(mtu2blksize(dev));
+       *((__le16 *)ptr) = dn_htons(mtu2blksize(dev));
        ptr += 2;
        *ptr++ = dn_db->parms.priority; /* Priority */ 
        *ptr++ = 0; /* Area: Reserved */
-       *((unsigned short *)ptr) = dn_htons((unsigned short)dn_db->parms.t3);
+       *((__le16 *)ptr) = dn_htons((unsigned short)dn_db->parms.t3);
        ptr += 2;
        *ptr++ = 0; /* MPD: Reserved */
        i1 = ptr++;
 
        skb_trim(skb, (27 + *i2));
 
-       pktlen = (unsigned short *)skb_push(skb, 2);
+       pktlen = (__le16 *)skb_push(skb, 2);
        *pktlen = dn_htons(skb->len - 2);
 
        skb->nh.raw = skb->data;
        ptr = skb_put(skb, 2 + 4 + tdlen);
 
        *ptr++ = DN_RT_PKT_HELO;
-       *((dn_address *)ptr) = ifa->ifa_local;
+       *((__le16 *)ptr) = ifa->ifa_local;
        ptr += 2;
        *ptr++ = tdlen;
 
 void dn_dev_up(struct net_device *dev)
 {
        struct dn_ifaddr *ifa;
-       dn_address addr = decnet_address;
+       __le16 addr = decnet_address;
        int maybe_default = 0;
        struct dn_dev *dn_db = (struct dn_dev *)dev->dn_ptr;
 
        if (dev->type == ARPHRD_ETHER) {
                if (memcmp(dev->dev_addr, dn_hiord, 4) != 0)
                        return;
-               addr = dn_htons(dn_eth2dn(dev->dev_addr));
+               addr = dn_eth2dn(dev->dev_addr);
                maybe_default = 1;
        }
 
                                mtu2blksize(dev),
                                dn_db->parms.priority,
                                dn_db->parms.state, dn_db->parms.name,
-                               dn_db->router ? dn_addr2asc(dn_ntohs(*(dn_address *)dn_db->router->primary_key), router_buf) : "",
-                               dn_db->peer ? dn_addr2asc(dn_ntohs(*(dn_address *)dn_db->peer->primary_key), peer_buf) : "");
+                               dn_db->router ? dn_addr2asc(dn_ntohs(*(__le16 *)dn_db->router->primary_key), router_buf) : "",
+                               dn_db->peer ? dn_addr2asc(dn_ntohs(*(__le16 *)dn_db->peer->primary_key), peer_buf) : "");
        }
        return 0;
 }
 
        return NULL;
 }
 
-u16 dn_fib_get_attr16(struct rtattr *attr, int attrlen, int type)
+__le16 dn_fib_get_attr16(struct rtattr *attr, int attrlen, int type)
 {
        while(RTA_OK(attr,attrlen)) {
                if (attr->rta_type == type)
-                       return *(u16*)RTA_DATA(attr);
+                       return *(__le16*)RTA_DATA(attr);
                attr = RTA_NEXT(attr, attrlen);
        }
 
        return skb->len;
 }
 
-static void fib_magic(int cmd, int type, __u16 dst, int dst_len, struct dn_ifaddr *ifa)
+static void fib_magic(int cmd, int type, __le16 dst, int dst_len, struct dn_ifaddr *ifa)
 {
        struct dn_fib_table *tb;
        struct {
        return NOTIFY_DONE;
 }
 
-int dn_fib_sync_down(dn_address local, struct net_device *dev, int force)
+int dn_fib_sync_down(__le16 local, struct net_device *dev, int force)
 {
         int ret = 0;
         int scope = RT_SCOPE_NOWHERE;
 
 struct neigh_table dn_neigh_table = {
        .family =                       PF_DECnet,
        .entry_size =                   sizeof(struct dn_neigh),
-       .key_len =                      sizeof(dn_address),
+       .key_len =                      sizeof(__le16),
        .hash =                         dn_neigh_hash,
        .constructor =                  dn_neigh_construct,
        .id =                           "dn_neigh_cache",
 
 static u32 dn_neigh_hash(const void *pkey, const struct net_device *dev)
 {
-       return jhash_2words(*(dn_address *)pkey, 0, dn_neigh_table.hash_rnd);
+       return jhash_2words(*(__u16 *)pkey, 0, dn_neigh_table.hash_rnd);
 }
 
 static int dn_neigh_construct(struct neighbour *neigh)
        data = skb_push(skb, sizeof(struct dn_long_packet) + 3);
        lp = (struct dn_long_packet *)(data+3);
 
-       *((unsigned short *)data) = dn_htons(skb->len - 2);
+       *((__le16 *)data) = dn_htons(skb->len - 2);
        *(data + 2) = 1 | DN_RT_F_PF; /* Padding */
 
        lp->msgflg   = DN_RT_PKT_LONG|(cb->rt_flags&(DN_RT_F_IE|DN_RT_F_RQR|DN_RT_F_RTS));
        lp->d_area   = lp->d_subarea = 0;
-       dn_dn2eth(lp->d_id, dn_ntohs(cb->dst));
+       dn_dn2eth(lp->d_id, cb->dst);
        lp->s_area   = lp->s_subarea = 0;
-       dn_dn2eth(lp->s_id, dn_ntohs(cb->src));
+       dn_dn2eth(lp->s_id, cb->src);
        lp->nl2      = 0;
        lp->visit_ct = cb->hops & 0x3f;
        lp->s_class  = 0;
         }
 
        data = skb_push(skb, sizeof(struct dn_short_packet) + 2);
-       *((unsigned short *)data) = dn_htons(skb->len - 2);
+       *((__le16 *)data) = dn_htons(skb->len - 2);
        sp = (struct dn_short_packet *)(data+2);
 
        sp->msgflg     = DN_RT_PKT_SHORT|(cb->rt_flags&(DN_RT_F_RQR|DN_RT_F_RTS));
        }
 
        data = skb_push(skb, sizeof(struct dn_short_packet) + 2);
-       *((unsigned short *)data) = dn_htons(skb->len - 2);
+       *((__le16 *)data) = dn_htons(skb->len - 2);
        sp = (struct dn_short_packet *)(data + 2);
 
        sp->msgflg   = DN_RT_PKT_SHORT|(cb->rt_flags&(DN_RT_F_RQR|DN_RT_F_RTS));
        struct neighbour *neigh;
        struct dn_neigh *dn;
        struct dn_dev *dn_db;
-       dn_address src;
+       __le16 src;
 
-       src = dn_htons(dn_eth2dn(msg->id));
+       src = dn_eth2dn(msg->id);
 
        neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1);
 
                }
 
                /* Only use routers in our area */
-               if ((dn_ntohs(src)>>10) == dn_ntohs((decnet_address)>>10)) {
+               if ((dn_ntohs(src)>>10) == (dn_ntohs((decnet_address))>>10)) {
                        if (!dn_db->router) {
                                dn_db->router = neigh_clone(neigh);
                        } else {
        struct endnode_hello_message *msg = (struct endnode_hello_message *)skb->data;
        struct neighbour *neigh;
        struct dn_neigh *dn;
-       dn_address src;
+       __le16 src;
 
-       src = dn_htons(dn_eth2dn(msg->id));
+       src = dn_eth2dn(msg->id);
 
        neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1);
 
 
        if (decnet_log_martians && net_ratelimit()) {
                char *devname = skb->dev ? skb->dev->name : "???";
                struct dn_skb_cb *cb = DN_SKB_CB(skb);
-               printk(KERN_INFO "DECnet: Martian packet (%s) dev=%s src=0x%04hx dst=0x%04hx srcport=0x%04hx dstport=0x%04hx\n", msg, devname, cb->src, cb->dst, cb->src_port, cb->dst_port);
+               printk(KERN_INFO "DECnet: Martian packet (%s) dev=%s src=0x%04hx dst=0x%04hx srcport=0x%04hx dstport=0x%04hx\n", msg, devname, dn_ntohs(cb->src), dn_ntohs(cb->dst), dn_ntohs(cb->src_port), dn_ntohs(cb->dst_port));
        }
 }
 
  */
 static int dn_process_ack(struct sock *sk, struct sk_buff *skb, int oth)
 {
-       unsigned short *ptr = (unsigned short *)skb->data;
+       __le16 *ptr = (__le16 *)skb->data;
        int len = 0;
        unsigned short ack;
 
        ptr = skb->data;
        cb->services = *ptr++;
        cb->info = *ptr++;
-       cb->segsize = dn_ntohs(*(__u16 *)ptr);
+       cb->segsize = dn_ntohs(*(__le16 *)ptr);
 
        if ((scp->state == DN_CI) || (scp->state == DN_CD)) {
                scp->persist = 0;
                if (skb->len > 0) {
                        unsigned char dlen = *skb->data;
                        if ((dlen <= 16) && (dlen <= skb->len)) {
-                               scp->conndata_in.opt_optl = dlen;
+                               scp->conndata_in.opt_optl = dn_htons((__u16)dlen);
                                memcpy(scp->conndata_in.opt_data, skb->data + 1, dlen);
                        }
                }
        if (skb->len < 2)
                goto out;
 
-       reason = dn_ntohs(*(__u16 *)skb->data);
+       reason = dn_ntohs(*(__le16 *)skb->data);
        skb_pull(skb, 2);
 
-       scp->discdata_in.opt_status = reason;
+       scp->discdata_in.opt_status = dn_htons(reason);
        scp->discdata_in.opt_optl   = 0;
        memset(scp->discdata_in.opt_data, 0, 16);
 
        if (skb->len > 0) {
                unsigned char dlen = *skb->data;
                if ((dlen <= 16) && (dlen <= skb->len)) {
-                       scp->discdata_in.opt_optl = dlen;
+                       scp->discdata_in.opt_optl = dn_htons((__u16)dlen);
                        memcpy(scp->discdata_in.opt_data, skb->data + 1, dlen);
                }
        }
        if (skb->len != 2)
                goto out;
 
-       reason = dn_ntohs(*(__u16 *)skb->data);
+       reason = dn_ntohs(*(__le16 *)skb->data);
 
        sk->sk_state = TCP_CLOSE;
 
        if (skb->len != 4)
                goto out;
 
-       segnum = dn_ntohs(*(__u16 *)ptr);
+       segnum = dn_ntohs(*(__le16 *)ptr);
        ptr += 2;
        lsflags = *(unsigned char *)ptr++;
        fcval = *ptr;
        if (skb->len < 2)
                goto out;
 
-       cb->segnum = segnum = dn_ntohs(*(__u16 *)skb->data);
+       cb->segnum = segnum = dn_ntohs(*(__le16 *)skb->data);
        skb_pull(skb, 2);
 
        if (seq_next(scp->numoth_rcv, segnum)) {
        if (skb->len < 2)
                goto out;
 
-       cb->segnum = segnum = dn_ntohs(*(__u16 *)skb->data);
+       cb->segnum = segnum = dn_ntohs(*(__le16 *)skb->data);
        skb_pull(skb, 2);
 
        if (seq_next(scp->numdat_rcv, segnum)) {
        /*
         * Grab the destination address.
         */
-       cb->dst_port = *(unsigned short *)ptr;
+       cb->dst_port = *(__le16 *)ptr;
        cb->src_port = 0;
        ptr += 2;
 
         * If not a connack, grab the source address too.
         */
        if (pskb_may_pull(skb, 5)) {
-               cb->src_port = *(unsigned short *)ptr;
+               cb->src_port = *(__le16 *)ptr;
                ptr += 2;
                skb_pull(skb, 5);
        }
         * Swap src & dst and look up in the normal way.
         */
        if (unlikely(cb->rt_flags & DN_RT_F_RTS)) {
-               unsigned short tmp = cb->dst_port;
+               __le16 tmp = cb->dst_port;
                cb->dst_port = cb->src_port;
                cb->src_port = tmp;
                tmp = cb->dst;
 
        return 0;
 }
 
-static inline unsigned char *dn_mk_common_header(struct dn_scp *scp, struct sk_buff *skb, unsigned char msgflag, int len)
+static inline __le16 *dn_mk_common_header(struct dn_scp *scp, struct sk_buff *skb, unsigned char msgflag, int len)
 {
        unsigned char *ptr = skb_push(skb, len);
 
        BUG_ON(len < 5);
 
        *ptr++ = msgflag;
-       *((unsigned short *)ptr) = scp->addrrem;
+       *((__le16 *)ptr) = scp->addrrem;
        ptr += 2;
-       *((unsigned short *)ptr) = scp->addrloc;
+       *((__le16 *)ptr) = scp->addrloc;
        ptr += 2;
-       return ptr;
+       return (__le16 __force *)ptr;
 }
 
-static unsigned short *dn_mk_ack_header(struct sock *sk, struct sk_buff *skb, unsigned char msgflag, int hlen, int other)
+static __le16 *dn_mk_ack_header(struct sock *sk, struct sk_buff *skb, unsigned char msgflag, int hlen, int other)
 {
        struct dn_scp *scp = DN_SK(sk);
        unsigned short acknum = scp->numdat_rcv & 0x0FFF;
        unsigned short ackcrs = scp->numoth_rcv & 0x0FFF;
-       unsigned short *ptr;
+       __le16 *ptr;
 
        BUG_ON(hlen < 9);
 
        /* Set "cross subchannel" bit in ackcrs */
        ackcrs |= 0x2000;
 
-       ptr = (unsigned short *)dn_mk_common_header(scp, skb, msgflag, hlen);
+       ptr = (__le16 *)dn_mk_common_header(scp, skb, msgflag, hlen);
 
        *ptr++ = dn_htons(acknum);
        *ptr++ = dn_htons(ackcrs);
        return ptr;
 }
 
-static unsigned short *dn_nsp_mk_data_header(struct sock *sk, struct sk_buff *skb, int oth)
+static __le16 *dn_nsp_mk_data_header(struct sock *sk, struct sk_buff *skb, int oth)
 {
        struct dn_scp *scp = DN_SK(sk);
        struct dn_skb_cb *cb = DN_SKB_CB(skb);
-       unsigned short *ptr = dn_mk_ack_header(sk, skb, cb->nsp_flags, 11, oth);
+       __le16 *ptr = dn_mk_ack_header(sk, skb, cb->nsp_flags, 11, oth);
 
        if (unlikely(oth)) {
                cb->segnum = scp->numoth;
        struct dn_scp *scp = DN_SK(sk);
        struct sk_buff *skb = NULL;
         struct nsp_conn_init_msg *msg;
-       unsigned char len = scp->conndata_out.opt_optl;
+       __u8 len = (__u8)dn_ntohs(scp->conndata_out.opt_optl);
 
-       if ((skb = dn_alloc_skb(sk, 50 + scp->conndata_out.opt_optl, gfp)) == NULL)
+       if ((skb = dn_alloc_skb(sk, 50 + dn_ntohs(scp->conndata_out.opt_optl), gfp)) == NULL)
                return;
 
         msg = (struct nsp_conn_init_msg *)skb_put(skb, sizeof(*msg));
 static __inline__ void dn_nsp_do_disc(struct sock *sk, unsigned char msgflg, 
                        unsigned short reason, gfp_t gfp,
                        struct dst_entry *dst,
-                       int ddl, unsigned char *dd, __u16 rem, __u16 loc)
+                       int ddl, unsigned char *dd, __le16 rem, __le16 loc)
 {
        struct sk_buff *skb = NULL;
        int size = 7 + ddl + ((msgflg == NSP_DISCINIT) ? 1 : 0);
 
        if ((dst == NULL) || (rem == 0)) {
                if (net_ratelimit())
-                       printk(KERN_DEBUG "DECnet: dn_nsp_do_disc: BUG! Please report this to SteveW@ACM.org rem=%u dst=%p\n", (unsigned)rem, dst);
+                       printk(KERN_DEBUG "DECnet: dn_nsp_do_disc: BUG! Please report this to SteveW@ACM.org rem=%u dst=%p\n", dn_ntohs(rem), dst);
                return;
        }
 
 
        msg = skb_put(skb, size);
        *msg++ = msgflg;
-       *(__u16 *)msg = rem;
+       *(__le16 *)msg = rem;
        msg += 2;
-       *(__u16 *)msg = loc;
+       *(__le16 *)msg = loc;
        msg += 2;
-       *(__u16 *)msg = dn_htons(reason);
+       *(__le16 *)msg = dn_htons(reason);
        msg += 2;
        if (msgflg == NSP_DISCINIT)
                *msg++ = ddl;
        int ddl = 0;
 
        if (msgflg == NSP_DISCINIT)
-               ddl = scp->discdata_out.opt_optl;
+               ddl = dn_ntohs(scp->discdata_out.opt_optl);
 
        if (reason == 0)
-               reason = scp->discdata_out.opt_status;
+               reason = dn_ntohs(scp->discdata_out.opt_status);
 
        dn_nsp_do_disc(sk, msgflg, reason, gfp, sk->sk_dst_cache, ddl, 
                scp->discdata_out.opt_data, scp->addrrem, scp->addrloc);
        if (aux > 0)
        memcpy(skb_put(skb, aux), scp->accessdata.acc_acc, aux);
 
-       aux = scp->conndata_out.opt_optl;
+       aux = (__u8)dn_ntohs(scp->conndata_out.opt_optl);
        *skb_put(skb, 1) = aux;
        if (aux > 0)
        memcpy(skb_put(skb,aux), scp->conndata_out.opt_data, aux);
 
        .entries =              ATOMIC_INIT(0),
 };
 
-static __inline__ unsigned dn_hash(unsigned short src, unsigned short dst)
+static __inline__ unsigned dn_hash(__le16 src, __le16 dst)
 {
-       unsigned short tmp = src ^ dst;
+       __u16 tmp = (__u16 __force)(src ^ dst);
        tmp ^= (tmp >> 3);
        tmp ^= (tmp >> 5);
        tmp ^= (tmp >> 10);
 {
        struct dn_skb_cb *cb;
        unsigned char *ptr;
-       dn_address *src;
-       dn_address *dst;
-       dn_address tmp;
+       __le16 *src;
+       __le16 *dst;
+       __le16 tmp;
 
        /* Add back headers */
        skb_push(skb, skb->data - skb->nh.raw);
        ptr = skb->data + 2;
        *ptr++ = (cb->rt_flags & ~DN_RT_F_RQR) | DN_RT_F_RTS;
 
-       dst = (dn_address *)ptr;
+       dst = (__le16 *)ptr;
        ptr += 2;
-       src = (dn_address *)ptr;
+       src = (__le16 *)ptr;
        ptr += 2;
        *ptr = 0; /* Zero hop count */
 
                struct dn_skb_cb *cb = DN_SKB_CB(skb);
                printk(KERN_DEBUG
                        "DECnet: dn_route_rx_packet: rt_flags=0x%02x dev=%s len=%d src=0x%04hx dst=0x%04hx err=%d type=%d\n",
-                       (int)cb->rt_flags, devname, skb->len, cb->src, cb->dst, 
+                       (int)cb->rt_flags, devname, skb->len,
+                       dn_ntohs(cb->src), dn_ntohs(cb->dst),
                        err, skb->pkt_type);
        }
 
 
         /* Destination info */
         ptr += 2;
-       cb->dst = dn_htons(dn_eth2dn(ptr));
+       cb->dst = dn_eth2dn(ptr);
         if (memcmp(ptr, dn_hiord_addr, 4) != 0)
                 goto drop_it;
         ptr += 6;
 
         /* Source info */
         ptr += 2;
-       cb->src = dn_htons(dn_eth2dn(ptr));
+       cb->src = dn_eth2dn(ptr);
         if (memcmp(ptr, dn_hiord_addr, 4) != 0)
                 goto drop_it;
         ptr += 6;
        skb_pull(skb, 5);
        skb->h.raw = skb->data;
 
-       cb->dst = *(dn_address *)ptr;
+       cb->dst = *(__le16 *)ptr;
         ptr += 2;
-        cb->src = *(dn_address *)ptr;
+        cb->src = *(__le16 *)ptr;
         ptr += 2;
         cb->hops = *ptr & 0x3f;
 
 {
        struct dn_skb_cb *cb;
        unsigned char flags = 0;
-       __u16 len = dn_ntohs(*(__u16 *)skb->data);
+       __u16 len = dn_ntohs(*(__le16 *)skb->data);
        struct dn_dev *dn = (struct dn_dev *)dev->dn_ptr;
        unsigned char padlen = 0;
 
                struct dn_skb_cb *cb = DN_SKB_CB(skb);
 
                printk(KERN_DEBUG "dn_rt_bug: skb from:%04x to:%04x\n",
-                               cb->src, cb->dst);
+                               dn_ntohs(cb->src), dn_ntohs(cb->dst));
        }
 
        kfree_skb(skb);
        return 0;
 }
 
-static inline int dn_match_addr(__u16 addr1, __u16 addr2)
+static inline int dn_match_addr(__le16 addr1, __le16 addr2)
 {
        __u16 tmp = dn_ntohs(addr1) ^ dn_ntohs(addr2);
        int match = 16;
        return match;
 }
 
-static __u16 dnet_select_source(const struct net_device *dev, __u16 daddr, int scope)
+static __le16 dnet_select_source(const struct net_device *dev, __le16 daddr, int scope)
 {
-       __u16 saddr = 0;
+       __le16 saddr = 0;
        struct dn_dev *dn_db = dev->dn_ptr;
        struct dn_ifaddr *ifa;
        int best_match = 0;
        return saddr;
 }
 
-static inline __u16 __dn_fib_res_prefsrc(struct dn_fib_res *res)
+static inline __le16 __dn_fib_res_prefsrc(struct dn_fib_res *res)
 {
        return dnet_select_source(DN_FIB_RES_DEV(*res), DN_FIB_RES_GW(*res), res->scope);
 }
 
-static inline __u16 dn_fib_rules_map_destination(__u16 daddr, struct dn_fib_res *res)
+static inline __le16 dn_fib_rules_map_destination(__le16 daddr, struct dn_fib_res *res)
 {
-       __u16 mask = dnet_make_mask(res->prefixlen);
+       __le16 mask = dnet_make_mask(res->prefixlen);
        return (daddr&~mask)|res->fi->fib_nh->nh_gw;
 }
 
        struct dn_fib_res res = { .fi = NULL, .type = RTN_UNICAST };
        int err;
        int free_res = 0;
-       __u16 gateway = 0;
+       __le16 gateway = 0;
 
        if (decnet_debug_level & 16)
                printk(KERN_DEBUG
                       "dn_route_output_slow: dst=%04x src=%04x mark=%d"
-                      " iif=%d oif=%d\n", oldflp->fld_dst, oldflp->fld_src,
+                      " iif=%d oif=%d\n", dn_ntohs(oldflp->fld_dst),
+                      dn_ntohs(oldflp->fld_src),
                        oldflp->fld_fwmark, loopback_dev.ifindex, oldflp->oif);
 
        /* If we have an output interface, verify its a DECnet device */
        if (decnet_debug_level & 16)
                printk(KERN_DEBUG
                       "dn_route_output_slow: initial checks complete."
-                      " dst=%o4x src=%04x oif=%d try_hard=%d\n", fl.fld_dst,
-                      fl.fld_src, fl.oif, try_hard);
+                      " dst=%o4x src=%04x oif=%d try_hard=%d\n",
+                      dn_ntohs(fl.fld_dst), dn_ntohs(fl.fld_src),
+                      fl.oif, try_hard);
 
        /*
         * N.B. If the kernel is compiled without router support then
        struct neighbour *neigh = NULL;
        unsigned hash;
        int flags = 0;
-       __u16 gateway = 0;
-       __u16 local_src = 0;
+       __le16 gateway = 0;
+       __le16 local_src = 0;
        struct flowi fl = { .nl_u = { .dn_u = 
                                     { .daddr = cb->dst,
                                       .saddr = cb->src,
                res.type = RTN_LOCAL;
                flags |= RTCF_DIRECTSRC;
        } else {
-               __u16 src_map = fl.fld_src;
+               __le16 src_map = fl.fld_src;
                free_res = 1;
 
                out_dev = DN_FIB_RES_DEV(res);
 
        unsigned char           r_action;
        unsigned char           r_dst_len;
        unsigned char           r_src_len;
-       dn_address              r_src;
-       dn_address              r_srcmask;
-       dn_address              r_dst;
-       dn_address              r_dstmask;
-       dn_address              r_srcmap;
+       __le16                  r_src;
+       __le16                  r_srcmask;
+       __le16                  r_dst;
+       __le16                  r_dstmask;
+       __le16                  r_srcmap;
        u8                      r_flags;
 #ifdef CONFIG_DECNET_ROUTE_FWMARK
        u32                     r_fwmark;
 {
        struct dn_fib_rule *r, *policy;
        struct dn_fib_table *tb;
-       dn_address saddr = flp->fld_src;
-       dn_address daddr = flp->fld_dst;
+       __le16 saddr = flp->fld_src;
+       __le16 daddr = flp->fld_dst;
        int err;
 
        read_lock(&dn_fib_rules_lock);
        return -ESRCH;
 }
 
-unsigned dnet_addr_type(__u16 addr)
+unsigned dnet_addr_type(__le16 addr)
 {
        struct flowi fl = { .nl_u = { .dn_u = { .daddr = addr } } };
        struct dn_fib_res res;
        return ret;
 }
 
-__u16 dn_fib_rules_policy(__u16 saddr, struct dn_fib_res *res, unsigned *flags)
+__le16 dn_fib_rules_policy(__le16 saddr, struct dn_fib_res *res, unsigned *flags)
 {
        struct dn_fib_rule *r = res->r;
 
 
        u32                     dz_hashmask;
 #define DZ_HASHMASK(dz)        ((dz)->dz_hashmask)
        int                     dz_order;
-       u16                     dz_mask;
+       __le16                  dz_mask;
 #define DZ_MASK(dz)    ((dz)->dz_mask)
 };
 
 
 static inline dn_fib_idx_t dn_hash(dn_fib_key_t key, struct dn_zone *dz)
 {
-       u16 h = ntohs(key.datum)>>(16 - dz->dz_order);
+       u16 h = dn_ntohs(key.datum)>>(16 - dz->dz_order);
        h ^= (h >> 10);
        h ^= (h >> 6);
        h &= DZ_HASHMASK(dz);
        return *(dn_fib_idx_t *)&h;
 }
 
-static inline dn_fib_key_t dz_key(u16 dst, struct dn_zone *dz)
+static inline dn_fib_key_t dz_key(__le16 dst, struct dn_zone *dz)
 {
        dn_fib_key_t k;
        k.datum = dst & DZ_MASK(dz);
 
        for_nexthops(fi) {
                int attrlen = nhlen - sizeof(struct rtnexthop);
-               dn_address gw;
+               __le16 gw;
 
                if (attrlen < 0 || (nhlen -= nhp->rtnh_len) < 0)
                        return -EINVAL;
 
        dz_key_0(key);
        if (rta->rta_dst) {
-               dn_address dst;
+               __le16 dst;
                memcpy(&dst, rta->rta_dst, 2);
                if (dst & ~DZ_MASK(dz))
                        return -EINVAL;
 
        dz_key_0(key);
        if (rta->rta_dst) {
-               dn_address dst;
+               __le16 dst;
                memcpy(&dst, rta->rta_dst, 2);
                if (dst & ~DZ_MASK(dz))
                        return -EINVAL;
 
  * Simple routine to parse an ascii DECnet address
  * into a network order address.
  */
-static int parse_addr(dn_address *addr, char *str)
+static int parse_addr(__le16 *addr, char *str)
 {
-       dn_address area, node;
+       __u16 area, node;
 
        while(*str && !ISNUM(*str)) str++;
 
                                void **context)
 {
        size_t len;
-       dn_address addr;
+       __le16 addr;
 
        if (oldval && oldlenp) {
                if (get_user(len, oldlenp))
                if (len) {
                        if (len != sizeof(unsigned short))
                                return -EINVAL;
-                       if (put_user(decnet_address, (unsigned short __user *)oldval))
+                       if (put_user(decnet_address, (__le16 __user *)oldval))
                                return -EFAULT;
                }
        }
        if (newval && newlen) {
                if (newlen != sizeof(unsigned short))
                        return -EINVAL;
-               if (get_user(addr, (unsigned short __user *)newval))
+               if (get_user(addr, (__le16 __user *)newval))
                        return -EFAULT;
 
                dn_dev_devices_off();
 {
        char addr[DN_ASCBUF_LEN];
        size_t len;
-       dn_address dnaddr;
+       __le16 dnaddr;
 
        if (!*lenp || (*ppos && !write)) {
                *lenp = 0;