Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[DECnet]: Endian annotation and fixes for DECnet.

The typedef for dn_address has been removed in favour of using __le16
or __u16 directly as appropriate. All the DECnet header files are
updated accordingly.

The byte ordering of dn_eth2dn() and dn_dn2eth() are both changed
since just about all their callers wanted network order rather than
host order, so the conversion is now done in the functions themselves.

Several missed endianess conversions have been picked up during the
conversion process. The nh_gw field in struct dn_fib_info has been
changed from a 32 bit field to 16 bits as it ought to be.

One or two cases of using htons rather than dn_htons in the routing
code have been found and fixed.

There are still a few warnings to fix, but this patch deals with the
important cases.

Signed-off-by: Steven Whitehouse <steve@chygwyn.com>
Signed-off-by: Patrick Caulfield <patrick@tykepenguin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Steven Whitehouse and committed by
David S. Miller
c4ea94ab 2c7946a7

+300 -298
+22 -22
include/linux/dn.h
··· 71 71 72 72 struct dn_naddr 73 73 { 74 - unsigned short a_len; 75 - unsigned char a_addr[DN_MAXADDL]; 74 + __le16 a_len; 75 + __u8 a_addr[DN_MAXADDL]; /* Two bytes little endian */ 76 76 }; 77 77 78 78 struct sockaddr_dn 79 79 { 80 - unsigned short sdn_family; 81 - unsigned char sdn_flags; 82 - unsigned char sdn_objnum; 83 - unsigned short sdn_objnamel; 84 - unsigned char sdn_objname[DN_MAXOBJL]; 80 + __u16 sdn_family; 81 + __u8 sdn_flags; 82 + __u8 sdn_objnum; 83 + __le16 sdn_objnamel; 84 + __u8 sdn_objname[DN_MAXOBJL]; 85 85 struct dn_naddr sdn_add; 86 86 }; 87 87 #define sdn_nodeaddrl sdn_add.a_len /* Node address length */ ··· 93 93 * DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure 94 94 */ 95 95 struct optdata_dn { 96 - unsigned short opt_status; /* Extended status return */ 96 + __le16 opt_status; /* Extended status return */ 97 97 #define opt_sts opt_status 98 - unsigned short opt_optl; /* Length of user data */ 99 - unsigned char opt_data[16]; /* User data */ 98 + __le16 opt_optl; /* Length of user data */ 99 + __u8 opt_data[16]; /* User data */ 100 100 }; 101 101 102 102 struct accessdata_dn 103 103 { 104 - unsigned char acc_accl; 105 - unsigned char acc_acc[DN_MAXACCL]; 106 - unsigned char acc_passl; 107 - unsigned char acc_pass[DN_MAXACCL]; 108 - unsigned char acc_userl; 109 - unsigned char acc_user[DN_MAXACCL]; 104 + __u8 acc_accl; 105 + __u8 acc_acc[DN_MAXACCL]; 106 + __u8 acc_passl; 107 + __u8 acc_pass[DN_MAXACCL]; 108 + __u8 acc_userl; 109 + __u8 acc_user[DN_MAXACCL]; 110 110 }; 111 111 112 112 /* 113 113 * DECnet logical link information structure 114 114 */ 115 115 struct linkinfo_dn { 116 - unsigned short idn_segsize; /* Segment size for link */ 117 - unsigned char idn_linkstate; /* Logical link state */ 116 + __le16 idn_segsize; /* Segment size for link */ 117 + __u8 idn_linkstate; /* Logical link state */ 118 118 }; 119 119 120 120 /* 121 121 * Ethernet address format (for DECnet) 122 122 */ 123 123 union etheraddress { 124 - unsigned char dne_addr[6]; /* Full ethernet address */ 124 + __u8 dne_addr[6]; /* Full ethernet address */ 125 125 struct { 126 - unsigned char dne_hiord[4]; /* DECnet HIORD prefix */ 127 - unsigned char dne_nodeaddr[2]; /* DECnet node address */ 126 + __u8 dne_hiord[4]; /* DECnet HIORD prefix */ 127 + __u8 dne_nodeaddr[2]; /* DECnet node address */ 128 128 } dne_remote; 129 129 }; 130 130 ··· 133 133 * DECnet physical socket address format 134 134 */ 135 135 struct dn_addr { 136 - unsigned short dna_family; /* AF_DECnet */ 136 + __le16 dna_family; /* AF_DECnet */ 137 137 union etheraddress dna_netaddr; /* DECnet ethernet address */ 138 138 }; 139 139
+50 -51
include/net/dn.h
··· 6 6 #include <net/tcp.h> 7 7 #include <asm/byteorder.h> 8 8 9 - typedef unsigned short dn_address; 10 - 11 - #define dn_ntohs(x) le16_to_cpu((unsigned short)(x)) 12 - #define dn_htons(x) cpu_to_le16((unsigned short)(x)) 9 + #define dn_ntohs(x) le16_to_cpu(x) 10 + #define dn_htons(x) cpu_to_le16(x) 13 11 14 12 struct dn_scp /* Session Control Port */ 15 13 { ··· 29 31 #define DN_CL 15 /* Closed */ 30 32 #define DN_CN 16 /* Closed Notification */ 31 33 32 - unsigned short addrloc; 33 - unsigned short addrrem; 34 - unsigned short numdat; 35 - unsigned short numoth; 36 - unsigned short numoth_rcv; 37 - unsigned short numdat_rcv; 38 - unsigned short ackxmt_dat; 39 - unsigned short ackxmt_oth; 40 - unsigned short ackrcv_dat; 41 - unsigned short ackrcv_oth; 42 - unsigned char flowrem_sw; 43 - unsigned char flowloc_sw; 34 + __le16 addrloc; 35 + __le16 addrrem; 36 + __u16 numdat; 37 + __u16 numoth; 38 + __u16 numoth_rcv; 39 + __u16 numdat_rcv; 40 + __u16 ackxmt_dat; 41 + __u16 ackxmt_oth; 42 + __u16 ackrcv_dat; 43 + __u16 ackrcv_oth; 44 + __u8 flowrem_sw; 45 + __u8 flowloc_sw; 44 46 #define DN_SEND 2 45 47 #define DN_DONTSEND 1 46 48 #define DN_NOCHANGE 0 47 - unsigned short flowrem_dat; 48 - unsigned short flowrem_oth; 49 - unsigned short flowloc_dat; 50 - unsigned short flowloc_oth; 51 - unsigned char services_rem; 52 - unsigned char services_loc; 53 - unsigned char info_rem; 54 - unsigned char info_loc; 49 + __u16 flowrem_dat; 50 + __u16 flowrem_oth; 51 + __u16 flowloc_dat; 52 + __u16 flowloc_oth; 53 + __u8 services_rem; 54 + __u8 services_loc; 55 + __u8 info_rem; 56 + __u8 info_loc; 55 57 56 - unsigned short segsize_rem; 57 - unsigned short segsize_loc; 58 + __u16 segsize_rem; 59 + __u16 segsize_loc; 58 60 59 - unsigned char nonagle; 60 - unsigned char multi_ireq; 61 - unsigned char accept_mode; 61 + __u8 nonagle; 62 + __u8 multi_ireq; 63 + __u8 accept_mode; 62 64 unsigned long seg_total; /* Running total of current segment */ 63 65 64 66 struct optdata_dn conndata_in; ··· 158 160 */ 159 161 #define DN_SKB_CB(skb) ((struct dn_skb_cb *)(skb)->cb) 160 162 struct dn_skb_cb { 161 - unsigned short dst; 162 - unsigned short src; 163 - unsigned short hops; 164 - unsigned short dst_port; 165 - unsigned short src_port; 166 - unsigned char services; 167 - unsigned char info; 168 - unsigned char rt_flags; 169 - unsigned char nsp_flags; 170 - unsigned short segsize; 171 - unsigned short segnum; 172 - unsigned short xmit_count; 163 + __le16 dst; 164 + __le16 src; 165 + __u16 hops; 166 + __le16 dst_port; 167 + __le16 src_port; 168 + __u8 services; 169 + __u8 info; 170 + __u8 rt_flags; 171 + __u8 nsp_flags; 172 + __u16 segsize; 173 + __u16 segnum; 174 + __u16 xmit_count; 173 175 unsigned long stamp; 174 176 int iif; 175 177 }; 176 178 177 - static inline dn_address dn_eth2dn(unsigned char *ethaddr) 179 + static inline __le16 dn_eth2dn(unsigned char *ethaddr) 178 180 { 179 - return ethaddr[4] | (ethaddr[5] << 8); 181 + return dn_htons(ethaddr[4] | (ethaddr[5] << 8)); 180 182 } 181 183 182 - static inline dn_address dn_saddr2dn(struct sockaddr_dn *saddr) 184 + static inline __le16 dn_saddr2dn(struct sockaddr_dn *saddr) 183 185 { 184 - return *(dn_address *)saddr->sdn_nodeaddr; 186 + return *(__le16 *)saddr->sdn_nodeaddr; 185 187 } 186 188 187 - static inline void dn_dn2eth(unsigned char *ethaddr, dn_address addr) 189 + static inline void dn_dn2eth(unsigned char *ethaddr, __le16 addr) 188 190 { 191 + __u16 a = dn_ntohs(addr); 189 192 ethaddr[0] = 0xAA; 190 193 ethaddr[1] = 0x00; 191 194 ethaddr[2] = 0x04; 192 195 ethaddr[3] = 0x00; 193 - ethaddr[4] = (unsigned char)(addr & 0xff); 194 - ethaddr[5] = (unsigned char)(addr >> 8); 196 + ethaddr[4] = (__u8)(a & 0xff); 197 + ethaddr[5] = (__u8)(a >> 8); 195 198 } 196 199 197 200 static inline void dn_sk_ports_copy(struct flowi *fl, struct dn_scp *scp) ··· 201 202 fl->uli_u.dnports.dport = scp->addrrem; 202 203 fl->uli_u.dnports.objnum = scp->addr.sdn_objnum; 203 204 if (fl->uli_u.dnports.objnum == 0) { 204 - fl->uli_u.dnports.objnamel = scp->addr.sdn_objnamel; 205 + fl->uli_u.dnports.objnamel = (__u8)dn_ntohs(scp->addr.sdn_objnamel); 205 206 memcpy(fl->uli_u.dnports.objname, scp->addr.sdn_objname, 16); 206 207 } 207 208 } ··· 216 217 extern struct sock *dn_sklist_find_listener(struct sockaddr_dn *addr); 217 218 extern struct sock *dn_find_by_skb(struct sk_buff *skb); 218 219 #define DN_ASCBUF_LEN 9 219 - extern char *dn_addr2asc(dn_address, char *); 220 + extern char *dn_addr2asc(__u16, char *); 220 221 extern int dn_destroy_timer(struct sock *sk); 221 222 222 223 extern int dn_sockaddr2username(struct sockaddr_dn *addr, unsigned char *buf, unsigned char type); ··· 225 226 extern void dn_start_slow_timer(struct sock *sk); 226 227 extern void dn_stop_slow_timer(struct sock *sk); 227 228 228 - extern dn_address decnet_address; 229 + extern __le16 decnet_address; 229 230 extern int decnet_debug_level; 230 231 extern int decnet_time_wait; 231 232 extern int decnet_dn_count;
+44 -44
include/net/dn_dev.h
··· 7 7 struct dn_ifaddr { 8 8 struct dn_ifaddr *ifa_next; 9 9 struct dn_dev *ifa_dev; 10 - dn_address ifa_local; 11 - dn_address ifa_address; 12 - unsigned char ifa_flags; 13 - unsigned char ifa_scope; 14 - char ifa_label[IFNAMSIZ]; 10 + __le16 ifa_local; 11 + __le16 ifa_address; 12 + __u8 ifa_flags; 13 + __u8 ifa_scope; 14 + char ifa_label[IFNAMSIZ]; 15 15 }; 16 16 17 17 #define DN_DEV_S_RU 0 /* Run - working normally */ ··· 91 91 struct timer_list timer; 92 92 unsigned long t3; 93 93 struct neigh_parms *neigh_parms; 94 - unsigned char addr[ETH_ALEN]; 94 + __u8 addr[ETH_ALEN]; 95 95 struct neighbour *router; /* Default router on circuit */ 96 96 struct neighbour *peer; /* Peer on pointopoint links */ 97 97 unsigned long uptime; /* Time device went up in jiffies */ ··· 99 99 100 100 struct dn_short_packet 101 101 { 102 - unsigned char msgflg; 103 - unsigned short dstnode; 104 - unsigned short srcnode; 105 - unsigned char forward; 102 + __u8 msgflg; 103 + __le16 dstnode; 104 + __le16 srcnode; 105 + __u8 forward; 106 106 } __attribute__((packed)); 107 107 108 108 struct dn_long_packet 109 109 { 110 - unsigned char msgflg; 111 - unsigned char d_area; 112 - unsigned char d_subarea; 113 - unsigned char d_id[6]; 114 - unsigned char s_area; 115 - unsigned char s_subarea; 116 - unsigned char s_id[6]; 117 - unsigned char nl2; 118 - unsigned char visit_ct; 119 - unsigned char s_class; 120 - unsigned char pt; 110 + __u8 msgflg; 111 + __u8 d_area; 112 + __u8 d_subarea; 113 + __u8 d_id[6]; 114 + __u8 s_area; 115 + __u8 s_subarea; 116 + __u8 s_id[6]; 117 + __u8 nl2; 118 + __u8 visit_ct; 119 + __u8 s_class; 120 + __u8 pt; 121 121 } __attribute__((packed)); 122 122 123 123 /*------------------------- DRP - Routing messages ---------------------*/ 124 124 125 125 struct endnode_hello_message 126 126 { 127 - unsigned char msgflg; 128 - unsigned char tiver[3]; 129 - unsigned char id[6]; 130 - unsigned char iinfo; 131 - unsigned short blksize; 132 - unsigned char area; 133 - unsigned char seed[8]; 134 - unsigned char neighbor[6]; 135 - unsigned short timer; 136 - unsigned char mpd; 137 - unsigned char datalen; 138 - unsigned char data[2]; 127 + __u8 msgflg; 128 + __u8 tiver[3]; 129 + __u8 id[6]; 130 + __u8 iinfo; 131 + __le16 blksize; 132 + __u8 area; 133 + __u8 seed[8]; 134 + __u8 neighbor[6]; 135 + __le16 timer; 136 + __u8 mpd; 137 + __u8 datalen; 138 + __u8 data[2]; 139 139 } __attribute__((packed)); 140 140 141 141 struct rtnode_hello_message 142 142 { 143 - unsigned char msgflg; 144 - unsigned char tiver[3]; 145 - unsigned char id[6]; 146 - unsigned char iinfo; 147 - unsigned short blksize; 148 - unsigned char priority; 149 - unsigned char area; 150 - unsigned short timer; 151 - unsigned char mpd; 143 + __u8 msgflg; 144 + __u8 tiver[3]; 145 + __u8 id[6]; 146 + __u8 iinfo; 147 + __le16 blksize; 148 + __u8 priority; 149 + __u8 area; 150 + __le16 timer; 151 + __u8 mpd; 152 152 } __attribute__((packed)); 153 153 154 154 ··· 169 169 170 170 extern int dn_dev_set_default(struct net_device *dev, int force); 171 171 extern struct net_device *dn_dev_get_default(void); 172 - extern int dn_dev_bind_default(dn_address *addr); 172 + extern int dn_dev_bind_default(__le16 *addr); 173 173 174 174 extern int register_dnaddr_notifier(struct notifier_block *nb); 175 175 extern int unregister_dnaddr_notifier(struct notifier_block *nb); 176 176 177 - static inline int dn_dev_islocal(struct net_device *dev, dn_address addr) 177 + static inline int dn_dev_islocal(struct net_device *dev, __le16 addr) 178 178 { 179 179 struct dn_dev *dn_db = dev->dn_ptr; 180 180 struct dn_ifaddr *ifa;
+11 -11
include/net/dn_fib.h
··· 37 37 int nh_weight; 38 38 int nh_power; 39 39 int nh_oif; 40 - u32 nh_gw; 40 + __le16 nh_gw; 41 41 }; 42 42 43 43 struct dn_fib_info { ··· 48 48 int fib_dead; 49 49 unsigned fib_flags; 50 50 int fib_protocol; 51 - dn_address fib_prefsrc; 51 + __le16 fib_prefsrc; 52 52 __u32 fib_priority; 53 53 __u32 fib_metrics[RTAX_MAX]; 54 54 #define dn_fib_mtu fib_metrics[RTAX_MTU-1] ··· 71 71 #define DN_FIB_RES_OIF(res) (DN_FIB_RES_NH(res).nh_oif) 72 72 73 73 typedef struct { 74 - u16 datum; 74 + __le16 datum; 75 75 } dn_fib_key_t; 76 76 77 77 typedef struct { 78 - u16 datum; 78 + __le16 datum; 79 79 } dn_fib_hash_t; 80 80 81 81 typedef struct { 82 - u16 datum; 82 + __u16 datum; 83 83 } dn_fib_idx_t; 84 84 85 85 struct dn_fib_node { ··· 126 126 const struct flowi *fl, 127 127 struct dn_fib_res *res); 128 128 extern void dn_fib_release_info(struct dn_fib_info *fi); 129 - extern u16 dn_fib_get_attr16(struct rtattr *attr, int attrlen, int type); 129 + extern __le16 dn_fib_get_attr16(struct rtattr *attr, int attrlen, int type); 130 130 extern void dn_fib_flush(void); 131 131 extern void dn_fib_select_multipath(const struct flowi *fl, 132 132 struct dn_fib_res *res); 133 - extern int dn_fib_sync_down(dn_address local, struct net_device *dev, 133 + extern int dn_fib_sync_down(__le16 local, struct net_device *dev, 134 134 int force); 135 135 extern int dn_fib_sync_up(struct net_device *dev); 136 136 ··· 148 148 extern void dn_fib_rules_init(void); 149 149 extern void dn_fib_rules_cleanup(void); 150 150 extern void dn_fib_rule_put(struct dn_fib_rule *); 151 - extern __u16 dn_fib_rules_policy(__u16 saddr, struct dn_fib_res *res, unsigned *flags); 152 - extern unsigned dnet_addr_type(__u16 addr); 151 + extern __le16 dn_fib_rules_policy(__le16 saddr, struct dn_fib_res *res, unsigned *flags); 152 + extern unsigned dnet_addr_type(__le16 addr); 153 153 extern int dn_fib_lookup(const struct flowi *fl, struct dn_fib_res *res); 154 154 155 155 /* ··· 194 194 195 195 #endif /* CONFIG_DECNET_ROUTER */ 196 196 197 - static inline u16 dnet_make_mask(int n) 197 + static inline __le16 dnet_make_mask(int n) 198 198 { 199 199 if (n) 200 - return htons(~((1<<(16-n))-1)); 200 + return dn_htons(~((1<<(16-n))-1)); 201 201 return 0; 202 202 } 203 203
+2 -2
include/net/dn_neigh.h
··· 7 7 */ 8 8 struct dn_neigh { 9 9 struct neighbour n; 10 - dn_address addr; 10 + __le16 addr; 11 11 unsigned long flags; 12 12 #define DN_NDFLAG_R1 0x0001 /* Router L1 */ 13 13 #define DN_NDFLAG_R2 0x0002 /* Router L2 */ 14 14 #define DN_NDFLAG_P3 0x0004 /* Phase III Node */ 15 15 unsigned long blksize; 16 - unsigned char priority; 16 + __u8 priority; 17 17 }; 18 18 19 19 extern void dn_neigh_init(void);
+36 -36
include/net/dn_nsp.h
··· 72 72 73 73 struct nsp_data_seg_msg 74 74 { 75 - unsigned char msgflg; 76 - unsigned short dstaddr; 77 - unsigned short srcaddr; 75 + __u8 msgflg; 76 + __le16 dstaddr; 77 + __le16 srcaddr; 78 78 } __attribute__((packed)); 79 79 80 80 struct nsp_data_opt_msg 81 81 { 82 - unsigned short acknum; 83 - unsigned short segnum; 84 - unsigned short lsflgs; 82 + __le16 acknum; 83 + __le16 segnum; 84 + __le16 lsflgs; 85 85 } __attribute__((packed)); 86 86 87 87 struct nsp_data_opt_msg1 88 88 { 89 - unsigned short acknum; 90 - unsigned short segnum; 89 + __le16 acknum; 90 + __le16 segnum; 91 91 } __attribute__((packed)); 92 92 93 93 94 94 /* Acknowledgment Message (data/other data) */ 95 95 struct nsp_data_ack_msg 96 96 { 97 - unsigned char msgflg; 98 - unsigned short dstaddr; 99 - unsigned short srcaddr; 100 - unsigned short acknum; 97 + __u8 msgflg; 98 + __le16 dstaddr; 99 + __le16 srcaddr; 100 + __le16 acknum; 101 101 } __attribute__((packed)); 102 102 103 103 /* Connect Acknowledgment Message */ 104 104 struct nsp_conn_ack_msg 105 105 { 106 - unsigned char msgflg; 107 - unsigned short dstaddr; 106 + __u8 msgflg; 107 + __le16 dstaddr; 108 108 } __attribute__((packed)); 109 109 110 110 111 111 /* Connect Initiate/Retransmit Initiate/Connect Confirm */ 112 112 struct nsp_conn_init_msg 113 113 { 114 - unsigned char msgflg; 114 + __u8 msgflg; 115 115 #define NSP_CI 0x18 /* Connect Initiate */ 116 116 #define NSP_RCI 0x68 /* Retrans. Conn Init */ 117 - unsigned short dstaddr; 118 - unsigned short srcaddr; 119 - unsigned char services; 117 + __le16 dstaddr; 118 + __le16 srcaddr; 119 + __u8 services; 120 120 #define NSP_FC_NONE 0x00 /* Flow Control None */ 121 121 #define NSP_FC_SRC 0x04 /* Seg Req. Count */ 122 122 #define NSP_FC_SCMC 0x08 /* Sess. Control Mess */ 123 123 #define NSP_FC_MASK 0x0c /* FC type mask */ 124 - unsigned char info; 125 - unsigned short segsize; 124 + __u8 info; 125 + __le16 segsize; 126 126 } __attribute__((packed)); 127 127 128 128 /* Disconnect Initiate/Disconnect Confirm */ 129 129 struct nsp_disconn_init_msg 130 130 { 131 - unsigned char msgflg; 132 - unsigned short dstaddr; 133 - unsigned short srcaddr; 134 - unsigned short reason; 131 + __u8 msgflg; 132 + __le16 dstaddr; 133 + __le16 srcaddr; 134 + __le16 reason; 135 135 } __attribute__((packed)); 136 136 137 137 138 138 139 139 struct srcobj_fmt 140 140 { 141 - char format; 142 - unsigned char task; 143 - unsigned short grpcode; 144 - unsigned short usrcode; 145 - char dlen; 141 + __u8 format; 142 + __u8 task; 143 + __le16 grpcode; 144 + __le16 usrcode; 145 + __u8 dlen; 146 146 } __attribute__((packed)); 147 147 148 148 /* ··· 150 150 * numbers used in NSP. Similar in operation to the functions 151 151 * of the same name in TCP. 152 152 */ 153 - static __inline__ int dn_before(unsigned short seq1, unsigned short seq2) 153 + static __inline__ int dn_before(__u16 seq1, __u16 seq2) 154 154 { 155 155 seq1 &= 0x0fff; 156 156 seq2 &= 0x0fff; ··· 159 159 } 160 160 161 161 162 - static __inline__ int dn_after(unsigned short seq1, unsigned short seq2) 162 + static __inline__ int dn_after(__u16 seq1, __u16 seq2) 163 163 { 164 164 seq1 &= 0x0fff; 165 165 seq2 &= 0x0fff; ··· 167 167 return (int)((seq2 - seq1) & 0x0fff) > 2048; 168 168 } 169 169 170 - static __inline__ int dn_equal(unsigned short seq1, unsigned short seq2) 170 + static __inline__ int dn_equal(__u16 seq1, __u16 seq2) 171 171 { 172 172 return ((seq1 ^ seq2) & 0x0fff) == 0; 173 173 } 174 174 175 - static __inline__ int dn_before_or_equal(unsigned short seq1, unsigned short seq2) 175 + static __inline__ int dn_before_or_equal(__u16 seq1, __u16 seq2) 176 176 { 177 177 return (dn_before(seq1, seq2) || dn_equal(seq1, seq2)); 178 178 } 179 179 180 - static __inline__ void seq_add(unsigned short *seq, unsigned short off) 180 + static __inline__ void seq_add(__u16 *seq, __u16 off) 181 181 { 182 182 (*seq) += off; 183 183 (*seq) &= 0x0fff; 184 184 } 185 185 186 - static __inline__ int seq_next(unsigned short seq1, unsigned short seq2) 186 + static __inline__ int seq_next(__u16 seq1, __u16 seq2) 187 187 { 188 188 return dn_equal(seq1 + 1, seq2); 189 189 } ··· 191 191 /* 192 192 * Can we delay the ack ? 193 193 */ 194 - static __inline__ int sendack(unsigned short seq) 194 + static __inline__ int sendack(__u16 seq) 195 195 { 196 196 return (int)((seq & 0x1000) ? 0 : 1); 197 197 }
+6 -6
include/net/dn_route.h
··· 71 71 struct dn_route *rt_next; 72 72 } u; 73 73 74 - __u16 rt_saddr; 75 - __u16 rt_daddr; 76 - __u16 rt_gateway; 77 - __u16 rt_local_src; /* Source used for forwarding packets */ 78 - __u16 rt_src_map; 79 - __u16 rt_dst_map; 74 + __le16 rt_saddr; 75 + __le16 rt_daddr; 76 + __le16 rt_gateway; 77 + __le16 rt_local_src; /* Source used for forwarding packets */ 78 + __le16 rt_src_map; 79 + __le16 rt_dst_map; 80 80 81 81 unsigned rt_flags; 82 82 unsigned rt_type;
+4 -4
include/net/flow.h
··· 30 30 } ip6_u; 31 31 32 32 struct { 33 - __u16 daddr; 34 - __u16 saddr; 33 + __le16 daddr; 34 + __le16 saddr; 35 35 __u32 fwmark; 36 36 __u8 scope; 37 37 } dn_u; ··· 64 64 } icmpt; 65 65 66 66 struct { 67 - __u16 sport; 68 - __u16 dport; 67 + __le16 sport; 68 + __le16 dport; 69 69 __u8 objnum; 70 70 __u8 objnamel; /* Not 16 bits since max val is 16 */ 71 71 __u8 objname[16]; /* Not zero terminated */
+8 -8
net/decnet/af_decnet.c
··· 172 172 /* 173 173 * Valid ports are those greater than zero and not already in use. 174 174 */ 175 - static int check_port(unsigned short port) 175 + static int check_port(__le16 port) 176 176 { 177 177 struct sock *sk; 178 178 struct hlist_node *node; ··· 661 661 } 662 662 } 663 663 664 - char *dn_addr2asc(dn_address addr, char *buf) 664 + char *dn_addr2asc(__u16 addr, char *buf) 665 665 { 666 666 unsigned short node, area; 667 667 ··· 801 801 /* End of compatibility stuff */ 802 802 803 803 scp->addr.sdn_add.a_len = dn_htons(2); 804 - rv = dn_dev_bind_default((dn_address *)scp->addr.sdn_add.a_addr); 804 + rv = dn_dev_bind_default((__le16 *)scp->addr.sdn_add.a_addr); 805 805 if (rv == 0) { 806 806 rv = dn_hash_sock(sk); 807 807 if (rv) ··· 1021 1021 opt->opt_optl = *ptr++; 1022 1022 opt->opt_status = 0; 1023 1023 memcpy(opt->opt_data, ptr, opt->opt_optl); 1024 - skb_pull(skb, opt->opt_optl + 1); 1024 + skb_pull(skb, dn_ntohs(opt->opt_optl) + 1); 1025 1025 1026 1026 } 1027 1027 ··· 1121 1121 1122 1122 skb_pull(skb, dn_username2sockaddr(skb->data, skb->len, &(DN_SK(newsk)->addr), &type)); 1123 1123 skb_pull(skb, dn_username2sockaddr(skb->data, skb->len, &(DN_SK(newsk)->peer), &type)); 1124 - *(dn_address *)(DN_SK(newsk)->peer.sdn_add.a_addr) = cb->src; 1125 - *(dn_address *)(DN_SK(newsk)->addr.sdn_add.a_addr) = cb->dst; 1124 + *(__le16 *)(DN_SK(newsk)->peer.sdn_add.a_addr) = cb->src; 1125 + *(__le16 *)(DN_SK(newsk)->addr.sdn_add.a_addr) = cb->dst; 1126 1126 1127 1127 menuver = *skb->data; 1128 1128 skb_pull(skb, 1); ··· 1365 1365 if (optlen != sizeof(struct optdata_dn)) 1366 1366 return -EINVAL; 1367 1367 1368 - if (u.opt.opt_optl > 16) 1368 + if (dn_ntohs(u.opt.opt_optl) > 16) 1369 1369 return -EINVAL; 1370 1370 1371 1371 memcpy(&scp->conndata_out, &u.opt, optlen); ··· 1378 1378 if (optlen != sizeof(struct optdata_dn)) 1379 1379 return -EINVAL; 1380 1380 1381 - if (u.opt.opt_optl > 16) 1381 + if (dn_ntohs(u.opt.opt_optl) > 16) 1382 1382 return -EINVAL; 1383 1383 1384 1384 memcpy(&scp->discdata_out, &u.opt, optlen);
+17 -17
net/decnet/dn_dev.c
··· 64 64 /* 65 65 * decnet_address is kept in network order. 66 66 */ 67 - dn_address decnet_address = 0; 67 + __le16 decnet_address = 0; 68 68 69 69 static DEFINE_RWLOCK(dndev_lock); 70 70 static struct net_device *decnet_default_device; ··· 439 439 *ifap = ifa1->ifa_next; 440 440 441 441 if (dn_db->dev->type == ARPHRD_ETHER) { 442 - if (ifa1->ifa_local != dn_htons(dn_eth2dn(dev->dev_addr))) { 442 + if (ifa1->ifa_local != dn_eth2dn(dev->dev_addr)) { 443 443 dn_dn2eth(mac_addr, ifa1->ifa_local); 444 444 dev_mc_delete(dev, mac_addr, ETH_ALEN, 0); 445 445 } ··· 470 470 } 471 471 472 472 if (dev->type == ARPHRD_ETHER) { 473 - if (ifa->ifa_local != dn_htons(dn_eth2dn(dev->dev_addr))) { 473 + if (ifa->ifa_local != dn_eth2dn(dev->dev_addr)) { 474 474 dn_dn2eth(mac_addr, ifa->ifa_local); 475 475 dev_mc_add(dev, mac_addr, ETH_ALEN, 0); 476 476 dev_mc_upload(dev); ··· 561 561 562 562 switch(cmd) { 563 563 case SIOCGIFADDR: 564 - *((dn_address *)sdn->sdn_nodeaddr) = ifa->ifa_local; 564 + *((__le16 *)sdn->sdn_nodeaddr) = ifa->ifa_local; 565 565 goto rarok; 566 566 567 567 case SIOCSIFADDR: ··· 804 804 return skb->len; 805 805 } 806 806 807 - static int dn_dev_get_first(struct net_device *dev, dn_address *addr) 807 + static int dn_dev_get_first(struct net_device *dev, __le16 *addr) 808 808 { 809 809 struct dn_dev *dn_db = (struct dn_dev *)dev->dn_ptr; 810 810 struct dn_ifaddr *ifa; ··· 830 830 * a sensible default. Eventually the routing code will take care of all the 831 831 * nasties for us I hope. 832 832 */ 833 - int dn_dev_bind_default(dn_address *addr) 833 + int dn_dev_bind_default(__le16 *addr) 834 834 { 835 835 struct net_device *dev; 836 836 int rv; ··· 853 853 { 854 854 struct endnode_hello_message *msg; 855 855 struct sk_buff *skb = NULL; 856 - unsigned short int *pktlen; 856 + __le16 *pktlen; 857 857 struct dn_dev *dn_db = (struct dn_dev *)dev->dn_ptr; 858 858 859 859 if ((skb = dn_alloc_skb(NULL, sizeof(*msg), GFP_ATOMIC)) == NULL) ··· 882 882 msg->datalen = 0x02; 883 883 memset(msg->data, 0xAA, 2); 884 884 885 - pktlen = (unsigned short *)skb_push(skb,2); 885 + pktlen = (__le16 *)skb_push(skb,2); 886 886 *pktlen = dn_htons(skb->len - 2); 887 887 888 888 skb->nh.raw = skb->data; ··· 926 926 size_t size; 927 927 unsigned char *ptr; 928 928 unsigned char *i1, *i2; 929 - unsigned short *pktlen; 929 + __le16 *pktlen; 930 930 char *src; 931 931 932 932 if (mtu2blksize(dev) < (26 + 7)) ··· 955 955 ptr += ETH_ALEN; 956 956 *ptr++ = dn_db->parms.forwarding == 1 ? 957 957 DN_RT_INFO_L1RT : DN_RT_INFO_L2RT; 958 - *((unsigned short *)ptr) = dn_htons(mtu2blksize(dev)); 958 + *((__le16 *)ptr) = dn_htons(mtu2blksize(dev)); 959 959 ptr += 2; 960 960 *ptr++ = dn_db->parms.priority; /* Priority */ 961 961 *ptr++ = 0; /* Area: Reserved */ 962 - *((unsigned short *)ptr) = dn_htons((unsigned short)dn_db->parms.t3); 962 + *((__le16 *)ptr) = dn_htons((unsigned short)dn_db->parms.t3); 963 963 ptr += 2; 964 964 *ptr++ = 0; /* MPD: Reserved */ 965 965 i1 = ptr++; ··· 974 974 975 975 skb_trim(skb, (27 + *i2)); 976 976 977 - pktlen = (unsigned short *)skb_push(skb, 2); 977 + pktlen = (__le16 *)skb_push(skb, 2); 978 978 *pktlen = dn_htons(skb->len - 2); 979 979 980 980 skb->nh.raw = skb->data; ··· 1016 1016 ptr = skb_put(skb, 2 + 4 + tdlen); 1017 1017 1018 1018 *ptr++ = DN_RT_PKT_HELO; 1019 - *((dn_address *)ptr) = ifa->ifa_local; 1019 + *((__le16 *)ptr) = ifa->ifa_local; 1020 1020 ptr += 2; 1021 1021 *ptr++ = tdlen; 1022 1022 ··· 1150 1150 void dn_dev_up(struct net_device *dev) 1151 1151 { 1152 1152 struct dn_ifaddr *ifa; 1153 - dn_address addr = decnet_address; 1153 + __le16 addr = decnet_address; 1154 1154 int maybe_default = 0; 1155 1155 struct dn_dev *dn_db = (struct dn_dev *)dev->dn_ptr; 1156 1156 ··· 1173 1173 if (dev->type == ARPHRD_ETHER) { 1174 1174 if (memcmp(dev->dev_addr, dn_hiord, 4) != 0) 1175 1175 return; 1176 - addr = dn_htons(dn_eth2dn(dev->dev_addr)); 1176 + addr = dn_eth2dn(dev->dev_addr); 1177 1177 maybe_default = 1; 1178 1178 } 1179 1179 ··· 1385 1385 mtu2blksize(dev), 1386 1386 dn_db->parms.priority, 1387 1387 dn_db->parms.state, dn_db->parms.name, 1388 - dn_db->router ? dn_addr2asc(dn_ntohs(*(dn_address *)dn_db->router->primary_key), router_buf) : "", 1389 - dn_db->peer ? dn_addr2asc(dn_ntohs(*(dn_address *)dn_db->peer->primary_key), peer_buf) : ""); 1388 + dn_db->router ? dn_addr2asc(dn_ntohs(*(__le16 *)dn_db->router->primary_key), router_buf) : "", 1389 + dn_db->peer ? dn_addr2asc(dn_ntohs(*(__le16 *)dn_db->peer->primary_key), peer_buf) : ""); 1390 1390 } 1391 1391 return 0; 1392 1392 }
+4 -4
net/decnet/dn_fib.c
··· 143 143 return NULL; 144 144 } 145 145 146 - u16 dn_fib_get_attr16(struct rtattr *attr, int attrlen, int type) 146 + __le16 dn_fib_get_attr16(struct rtattr *attr, int attrlen, int type) 147 147 { 148 148 while(RTA_OK(attr,attrlen)) { 149 149 if (attr->rta_type == type) 150 - return *(u16*)RTA_DATA(attr); 150 + return *(__le16*)RTA_DATA(attr); 151 151 attr = RTA_NEXT(attr, attrlen); 152 152 } 153 153 ··· 565 565 return skb->len; 566 566 } 567 567 568 - static void fib_magic(int cmd, int type, __u16 dst, int dst_len, struct dn_ifaddr *ifa) 568 + static void fib_magic(int cmd, int type, __le16 dst, int dst_len, struct dn_ifaddr *ifa) 569 569 { 570 570 struct dn_fib_table *tb; 571 571 struct { ··· 684 684 return NOTIFY_DONE; 685 685 } 686 686 687 - int dn_fib_sync_down(dn_address local, struct net_device *dev, int force) 687 + int dn_fib_sync_down(__le16 local, struct net_device *dev, int force) 688 688 { 689 689 int ret = 0; 690 690 int scope = RT_SCOPE_NOWHERE;
+12 -12
net/decnet/dn_neigh.c
··· 95 95 struct neigh_table dn_neigh_table = { 96 96 .family = PF_DECnet, 97 97 .entry_size = sizeof(struct dn_neigh), 98 - .key_len = sizeof(dn_address), 98 + .key_len = sizeof(__le16), 99 99 .hash = dn_neigh_hash, 100 100 .constructor = dn_neigh_construct, 101 101 .id = "dn_neigh_cache", ··· 123 123 124 124 static u32 dn_neigh_hash(const void *pkey, const struct net_device *dev) 125 125 { 126 - return jhash_2words(*(dn_address *)pkey, 0, dn_neigh_table.hash_rnd); 126 + return jhash_2words(*(__u16 *)pkey, 0, dn_neigh_table.hash_rnd); 127 127 } 128 128 129 129 static int dn_neigh_construct(struct neighbour *neigh) ··· 249 249 data = skb_push(skb, sizeof(struct dn_long_packet) + 3); 250 250 lp = (struct dn_long_packet *)(data+3); 251 251 252 - *((unsigned short *)data) = dn_htons(skb->len - 2); 252 + *((__le16 *)data) = dn_htons(skb->len - 2); 253 253 *(data + 2) = 1 | DN_RT_F_PF; /* Padding */ 254 254 255 255 lp->msgflg = DN_RT_PKT_LONG|(cb->rt_flags&(DN_RT_F_IE|DN_RT_F_RQR|DN_RT_F_RTS)); 256 256 lp->d_area = lp->d_subarea = 0; 257 - dn_dn2eth(lp->d_id, dn_ntohs(cb->dst)); 257 + dn_dn2eth(lp->d_id, cb->dst); 258 258 lp->s_area = lp->s_subarea = 0; 259 - dn_dn2eth(lp->s_id, dn_ntohs(cb->src)); 259 + dn_dn2eth(lp->s_id, cb->src); 260 260 lp->nl2 = 0; 261 261 lp->visit_ct = cb->hops & 0x3f; 262 262 lp->s_class = 0; ··· 293 293 } 294 294 295 295 data = skb_push(skb, sizeof(struct dn_short_packet) + 2); 296 - *((unsigned short *)data) = dn_htons(skb->len - 2); 296 + *((__le16 *)data) = dn_htons(skb->len - 2); 297 297 sp = (struct dn_short_packet *)(data+2); 298 298 299 299 sp->msgflg = DN_RT_PKT_SHORT|(cb->rt_flags&(DN_RT_F_RQR|DN_RT_F_RTS)); ··· 335 335 } 336 336 337 337 data = skb_push(skb, sizeof(struct dn_short_packet) + 2); 338 - *((unsigned short *)data) = dn_htons(skb->len - 2); 338 + *((__le16 *)data) = dn_htons(skb->len - 2); 339 339 sp = (struct dn_short_packet *)(data + 2); 340 340 341 341 sp->msgflg = DN_RT_PKT_SHORT|(cb->rt_flags&(DN_RT_F_RQR|DN_RT_F_RTS)); ··· 373 373 struct neighbour *neigh; 374 374 struct dn_neigh *dn; 375 375 struct dn_dev *dn_db; 376 - dn_address src; 376 + __le16 src; 377 377 378 - src = dn_htons(dn_eth2dn(msg->id)); 378 + src = dn_eth2dn(msg->id); 379 379 380 380 neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1); 381 381 ··· 409 409 } 410 410 411 411 /* Only use routers in our area */ 412 - if ((dn_ntohs(src)>>10) == dn_ntohs((decnet_address)>>10)) { 412 + if ((dn_ntohs(src)>>10) == (dn_ntohs((decnet_address))>>10)) { 413 413 if (!dn_db->router) { 414 414 dn_db->router = neigh_clone(neigh); 415 415 } else { ··· 433 433 struct endnode_hello_message *msg = (struct endnode_hello_message *)skb->data; 434 434 struct neighbour *neigh; 435 435 struct dn_neigh *dn; 436 - dn_address src; 436 + __le16 src; 437 437 438 - src = dn_htons(dn_eth2dn(msg->id)); 438 + src = dn_eth2dn(msg->id); 439 439 440 440 neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1); 441 441
+14 -14
net/decnet/dn_nsp_in.c
··· 85 85 if (decnet_log_martians && net_ratelimit()) { 86 86 char *devname = skb->dev ? skb->dev->name : "???"; 87 87 struct dn_skb_cb *cb = DN_SKB_CB(skb); 88 - 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); 88 + 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)); 89 89 } 90 90 } 91 91 ··· 128 128 */ 129 129 static int dn_process_ack(struct sock *sk, struct sk_buff *skb, int oth) 130 130 { 131 - unsigned short *ptr = (unsigned short *)skb->data; 131 + __le16 *ptr = (__le16 *)skb->data; 132 132 int len = 0; 133 133 unsigned short ack; 134 134 ··· 346 346 ptr = skb->data; 347 347 cb->services = *ptr++; 348 348 cb->info = *ptr++; 349 - cb->segsize = dn_ntohs(*(__u16 *)ptr); 349 + cb->segsize = dn_ntohs(*(__le16 *)ptr); 350 350 351 351 if ((scp->state == DN_CI) || (scp->state == DN_CD)) { 352 352 scp->persist = 0; ··· 363 363 if (skb->len > 0) { 364 364 unsigned char dlen = *skb->data; 365 365 if ((dlen <= 16) && (dlen <= skb->len)) { 366 - scp->conndata_in.opt_optl = dlen; 366 + scp->conndata_in.opt_optl = dn_htons((__u16)dlen); 367 367 memcpy(scp->conndata_in.opt_data, skb->data + 1, dlen); 368 368 } 369 369 } ··· 397 397 if (skb->len < 2) 398 398 goto out; 399 399 400 - reason = dn_ntohs(*(__u16 *)skb->data); 400 + reason = dn_ntohs(*(__le16 *)skb->data); 401 401 skb_pull(skb, 2); 402 402 403 - scp->discdata_in.opt_status = reason; 403 + scp->discdata_in.opt_status = dn_htons(reason); 404 404 scp->discdata_in.opt_optl = 0; 405 405 memset(scp->discdata_in.opt_data, 0, 16); 406 406 407 407 if (skb->len > 0) { 408 408 unsigned char dlen = *skb->data; 409 409 if ((dlen <= 16) && (dlen <= skb->len)) { 410 - scp->discdata_in.opt_optl = dlen; 410 + scp->discdata_in.opt_optl = dn_htons((__u16)dlen); 411 411 memcpy(scp->discdata_in.opt_data, skb->data + 1, dlen); 412 412 } 413 413 } ··· 464 464 if (skb->len != 2) 465 465 goto out; 466 466 467 - reason = dn_ntohs(*(__u16 *)skb->data); 467 + reason = dn_ntohs(*(__le16 *)skb->data); 468 468 469 469 sk->sk_state = TCP_CLOSE; 470 470 ··· 513 513 if (skb->len != 4) 514 514 goto out; 515 515 516 - segnum = dn_ntohs(*(__u16 *)ptr); 516 + segnum = dn_ntohs(*(__le16 *)ptr); 517 517 ptr += 2; 518 518 lsflags = *(unsigned char *)ptr++; 519 519 fcval = *ptr; ··· 621 621 if (skb->len < 2) 622 622 goto out; 623 623 624 - cb->segnum = segnum = dn_ntohs(*(__u16 *)skb->data); 624 + cb->segnum = segnum = dn_ntohs(*(__le16 *)skb->data); 625 625 skb_pull(skb, 2); 626 626 627 627 if (seq_next(scp->numoth_rcv, segnum)) { ··· 649 649 if (skb->len < 2) 650 650 goto out; 651 651 652 - cb->segnum = segnum = dn_ntohs(*(__u16 *)skb->data); 652 + cb->segnum = segnum = dn_ntohs(*(__le16 *)skb->data); 653 653 skb_pull(skb, 2); 654 654 655 655 if (seq_next(scp->numdat_rcv, segnum)) { ··· 760 760 /* 761 761 * Grab the destination address. 762 762 */ 763 - cb->dst_port = *(unsigned short *)ptr; 763 + cb->dst_port = *(__le16 *)ptr; 764 764 cb->src_port = 0; 765 765 ptr += 2; 766 766 ··· 768 768 * If not a connack, grab the source address too. 769 769 */ 770 770 if (pskb_may_pull(skb, 5)) { 771 - cb->src_port = *(unsigned short *)ptr; 771 + cb->src_port = *(__le16 *)ptr; 772 772 ptr += 2; 773 773 skb_pull(skb, 5); 774 774 } ··· 778 778 * Swap src & dst and look up in the normal way. 779 779 */ 780 780 if (unlikely(cb->rt_flags & DN_RT_F_RTS)) { 781 - unsigned short tmp = cb->dst_port; 781 + __le16 tmp = cb->dst_port; 782 782 cb->dst_port = cb->src_port; 783 783 cb->src_port = tmp; 784 784 tmp = cb->dst;
+19 -19
net/decnet/dn_nsp_out.c
··· 287 287 return 0; 288 288 } 289 289 290 - static inline unsigned char *dn_mk_common_header(struct dn_scp *scp, struct sk_buff *skb, unsigned char msgflag, int len) 290 + static inline __le16 *dn_mk_common_header(struct dn_scp *scp, struct sk_buff *skb, unsigned char msgflag, int len) 291 291 { 292 292 unsigned char *ptr = skb_push(skb, len); 293 293 294 294 BUG_ON(len < 5); 295 295 296 296 *ptr++ = msgflag; 297 - *((unsigned short *)ptr) = scp->addrrem; 297 + *((__le16 *)ptr) = scp->addrrem; 298 298 ptr += 2; 299 - *((unsigned short *)ptr) = scp->addrloc; 299 + *((__le16 *)ptr) = scp->addrloc; 300 300 ptr += 2; 301 - return ptr; 301 + return (__le16 __force *)ptr; 302 302 } 303 303 304 - static unsigned short *dn_mk_ack_header(struct sock *sk, struct sk_buff *skb, unsigned char msgflag, int hlen, int other) 304 + static __le16 *dn_mk_ack_header(struct sock *sk, struct sk_buff *skb, unsigned char msgflag, int hlen, int other) 305 305 { 306 306 struct dn_scp *scp = DN_SK(sk); 307 307 unsigned short acknum = scp->numdat_rcv & 0x0FFF; 308 308 unsigned short ackcrs = scp->numoth_rcv & 0x0FFF; 309 - unsigned short *ptr; 309 + __le16 *ptr; 310 310 311 311 BUG_ON(hlen < 9); 312 312 ··· 325 325 /* Set "cross subchannel" bit in ackcrs */ 326 326 ackcrs |= 0x2000; 327 327 328 - ptr = (unsigned short *)dn_mk_common_header(scp, skb, msgflag, hlen); 328 + ptr = (__le16 *)dn_mk_common_header(scp, skb, msgflag, hlen); 329 329 330 330 *ptr++ = dn_htons(acknum); 331 331 *ptr++ = dn_htons(ackcrs); ··· 333 333 return ptr; 334 334 } 335 335 336 - static unsigned short *dn_nsp_mk_data_header(struct sock *sk, struct sk_buff *skb, int oth) 336 + static __le16 *dn_nsp_mk_data_header(struct sock *sk, struct sk_buff *skb, int oth) 337 337 { 338 338 struct dn_scp *scp = DN_SK(sk); 339 339 struct dn_skb_cb *cb = DN_SKB_CB(skb); 340 - unsigned short *ptr = dn_mk_ack_header(sk, skb, cb->nsp_flags, 11, oth); 340 + __le16 *ptr = dn_mk_ack_header(sk, skb, cb->nsp_flags, 11, oth); 341 341 342 342 if (unlikely(oth)) { 343 343 cb->segnum = scp->numoth; ··· 524 524 struct dn_scp *scp = DN_SK(sk); 525 525 struct sk_buff *skb = NULL; 526 526 struct nsp_conn_init_msg *msg; 527 - unsigned char len = scp->conndata_out.opt_optl; 527 + __u8 len = (__u8)dn_ntohs(scp->conndata_out.opt_optl); 528 528 529 - if ((skb = dn_alloc_skb(sk, 50 + scp->conndata_out.opt_optl, gfp)) == NULL) 529 + if ((skb = dn_alloc_skb(sk, 50 + dn_ntohs(scp->conndata_out.opt_optl), gfp)) == NULL) 530 530 return; 531 531 532 532 msg = (struct nsp_conn_init_msg *)skb_put(skb, sizeof(*msg)); ··· 553 553 static __inline__ void dn_nsp_do_disc(struct sock *sk, unsigned char msgflg, 554 554 unsigned short reason, gfp_t gfp, 555 555 struct dst_entry *dst, 556 - int ddl, unsigned char *dd, __u16 rem, __u16 loc) 556 + int ddl, unsigned char *dd, __le16 rem, __le16 loc) 557 557 { 558 558 struct sk_buff *skb = NULL; 559 559 int size = 7 + ddl + ((msgflg == NSP_DISCINIT) ? 1 : 0); ··· 561 561 562 562 if ((dst == NULL) || (rem == 0)) { 563 563 if (net_ratelimit()) 564 - printk(KERN_DEBUG "DECnet: dn_nsp_do_disc: BUG! Please report this to SteveW@ACM.org rem=%u dst=%p\n", (unsigned)rem, dst); 564 + 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); 565 565 return; 566 566 } 567 567 ··· 570 570 571 571 msg = skb_put(skb, size); 572 572 *msg++ = msgflg; 573 - *(__u16 *)msg = rem; 573 + *(__le16 *)msg = rem; 574 574 msg += 2; 575 - *(__u16 *)msg = loc; 575 + *(__le16 *)msg = loc; 576 576 msg += 2; 577 - *(__u16 *)msg = dn_htons(reason); 577 + *(__le16 *)msg = dn_htons(reason); 578 578 msg += 2; 579 579 if (msgflg == NSP_DISCINIT) 580 580 *msg++ = ddl; ··· 600 600 int ddl = 0; 601 601 602 602 if (msgflg == NSP_DISCINIT) 603 - ddl = scp->discdata_out.opt_optl; 603 + ddl = dn_ntohs(scp->discdata_out.opt_optl); 604 604 605 605 if (reason == 0) 606 - reason = scp->discdata_out.opt_status; 606 + reason = dn_ntohs(scp->discdata_out.opt_status); 607 607 608 608 dn_nsp_do_disc(sk, msgflg, reason, gfp, sk->sk_dst_cache, ddl, 609 609 scp->discdata_out.opt_data, scp->addrrem, scp->addrloc); ··· 708 708 if (aux > 0) 709 709 memcpy(skb_put(skb, aux), scp->accessdata.acc_acc, aux); 710 710 711 - aux = scp->conndata_out.opt_optl; 711 + aux = (__u8)dn_ntohs(scp->conndata_out.opt_optl); 712 712 *skb_put(skb, 1) = aux; 713 713 if (aux > 0) 714 714 memcpy(skb_put(skb,aux), scp->conndata_out.opt_data, aux);
+30 -27
net/decnet/dn_route.c
··· 133 133 .entries = ATOMIC_INIT(0), 134 134 }; 135 135 136 - static __inline__ unsigned dn_hash(unsigned short src, unsigned short dst) 136 + static __inline__ unsigned dn_hash(__le16 src, __le16 dst) 137 137 { 138 - unsigned short tmp = src ^ dst; 138 + __u16 tmp = (__u16 __force)(src ^ dst); 139 139 tmp ^= (tmp >> 3); 140 140 tmp ^= (tmp >> 5); 141 141 tmp ^= (tmp >> 10); ··· 379 379 { 380 380 struct dn_skb_cb *cb; 381 381 unsigned char *ptr; 382 - dn_address *src; 383 - dn_address *dst; 384 - dn_address tmp; 382 + __le16 *src; 383 + __le16 *dst; 384 + __le16 tmp; 385 385 386 386 /* Add back headers */ 387 387 skb_push(skb, skb->data - skb->nh.raw); ··· 394 394 ptr = skb->data + 2; 395 395 *ptr++ = (cb->rt_flags & ~DN_RT_F_RQR) | DN_RT_F_RTS; 396 396 397 - dst = (dn_address *)ptr; 397 + dst = (__le16 *)ptr; 398 398 ptr += 2; 399 - src = (dn_address *)ptr; 399 + src = (__le16 *)ptr; 400 400 ptr += 2; 401 401 *ptr = 0; /* Zero hop count */ 402 402 ··· 475 475 struct dn_skb_cb *cb = DN_SKB_CB(skb); 476 476 printk(KERN_DEBUG 477 477 "DECnet: dn_route_rx_packet: rt_flags=0x%02x dev=%s len=%d src=0x%04hx dst=0x%04hx err=%d type=%d\n", 478 - (int)cb->rt_flags, devname, skb->len, cb->src, cb->dst, 478 + (int)cb->rt_flags, devname, skb->len, 479 + dn_ntohs(cb->src), dn_ntohs(cb->dst), 479 480 err, skb->pkt_type); 480 481 } 481 482 ··· 506 505 507 506 /* Destination info */ 508 507 ptr += 2; 509 - cb->dst = dn_htons(dn_eth2dn(ptr)); 508 + cb->dst = dn_eth2dn(ptr); 510 509 if (memcmp(ptr, dn_hiord_addr, 4) != 0) 511 510 goto drop_it; 512 511 ptr += 6; ··· 514 513 515 514 /* Source info */ 516 515 ptr += 2; 517 - cb->src = dn_htons(dn_eth2dn(ptr)); 516 + cb->src = dn_eth2dn(ptr); 518 517 if (memcmp(ptr, dn_hiord_addr, 4) != 0) 519 518 goto drop_it; 520 519 ptr += 6; ··· 542 541 skb_pull(skb, 5); 543 542 skb->h.raw = skb->data; 544 543 545 - cb->dst = *(dn_address *)ptr; 544 + cb->dst = *(__le16 *)ptr; 546 545 ptr += 2; 547 - cb->src = *(dn_address *)ptr; 546 + cb->src = *(__le16 *)ptr; 548 547 ptr += 2; 549 548 cb->hops = *ptr & 0x3f; 550 549 ··· 576 575 { 577 576 struct dn_skb_cb *cb; 578 577 unsigned char flags = 0; 579 - __u16 len = dn_ntohs(*(__u16 *)skb->data); 578 + __u16 len = dn_ntohs(*(__le16 *)skb->data); 580 579 struct dn_dev *dn = (struct dn_dev *)dev->dn_ptr; 581 580 unsigned char padlen = 0; 582 581 ··· 783 782 struct dn_skb_cb *cb = DN_SKB_CB(skb); 784 783 785 784 printk(KERN_DEBUG "dn_rt_bug: skb from:%04x to:%04x\n", 786 - cb->src, cb->dst); 785 + dn_ntohs(cb->src), dn_ntohs(cb->dst)); 787 786 } 788 787 789 788 kfree_skb(skb); ··· 824 823 return 0; 825 824 } 826 825 827 - static inline int dn_match_addr(__u16 addr1, __u16 addr2) 826 + static inline int dn_match_addr(__le16 addr1, __le16 addr2) 828 827 { 829 828 __u16 tmp = dn_ntohs(addr1) ^ dn_ntohs(addr2); 830 829 int match = 16; ··· 835 834 return match; 836 835 } 837 836 838 - static __u16 dnet_select_source(const struct net_device *dev, __u16 daddr, int scope) 837 + static __le16 dnet_select_source(const struct net_device *dev, __le16 daddr, int scope) 839 838 { 840 - __u16 saddr = 0; 839 + __le16 saddr = 0; 841 840 struct dn_dev *dn_db = dev->dn_ptr; 842 841 struct dn_ifaddr *ifa; 843 842 int best_match = 0; ··· 862 861 return saddr; 863 862 } 864 863 865 - static inline __u16 __dn_fib_res_prefsrc(struct dn_fib_res *res) 864 + static inline __le16 __dn_fib_res_prefsrc(struct dn_fib_res *res) 866 865 { 867 866 return dnet_select_source(DN_FIB_RES_DEV(*res), DN_FIB_RES_GW(*res), res->scope); 868 867 } 869 868 870 - static inline __u16 dn_fib_rules_map_destination(__u16 daddr, struct dn_fib_res *res) 869 + static inline __le16 dn_fib_rules_map_destination(__le16 daddr, struct dn_fib_res *res) 871 870 { 872 - __u16 mask = dnet_make_mask(res->prefixlen); 871 + __le16 mask = dnet_make_mask(res->prefixlen); 873 872 return (daddr&~mask)|res->fi->fib_nh->nh_gw; 874 873 } 875 874 ··· 893 892 struct dn_fib_res res = { .fi = NULL, .type = RTN_UNICAST }; 894 893 int err; 895 894 int free_res = 0; 896 - __u16 gateway = 0; 895 + __le16 gateway = 0; 897 896 898 897 if (decnet_debug_level & 16) 899 898 printk(KERN_DEBUG 900 899 "dn_route_output_slow: dst=%04x src=%04x mark=%d" 901 - " iif=%d oif=%d\n", oldflp->fld_dst, oldflp->fld_src, 900 + " iif=%d oif=%d\n", dn_ntohs(oldflp->fld_dst), 901 + dn_ntohs(oldflp->fld_src), 902 902 oldflp->fld_fwmark, loopback_dev.ifindex, oldflp->oif); 903 903 904 904 /* If we have an output interface, verify its a DECnet device */ ··· 963 961 if (decnet_debug_level & 16) 964 962 printk(KERN_DEBUG 965 963 "dn_route_output_slow: initial checks complete." 966 - " dst=%o4x src=%04x oif=%d try_hard=%d\n", fl.fld_dst, 967 - fl.fld_src, fl.oif, try_hard); 964 + " dst=%o4x src=%04x oif=%d try_hard=%d\n", 965 + dn_ntohs(fl.fld_dst), dn_ntohs(fl.fld_src), 966 + fl.oif, try_hard); 968 967 969 968 /* 970 969 * N.B. If the kernel is compiled without router support then ··· 1221 1218 struct neighbour *neigh = NULL; 1222 1219 unsigned hash; 1223 1220 int flags = 0; 1224 - __u16 gateway = 0; 1225 - __u16 local_src = 0; 1221 + __le16 gateway = 0; 1222 + __le16 local_src = 0; 1226 1223 struct flowi fl = { .nl_u = { .dn_u = 1227 1224 { .daddr = cb->dst, 1228 1225 .saddr = cb->src, ··· 1269 1266 res.type = RTN_LOCAL; 1270 1267 flags |= RTCF_DIRECTSRC; 1271 1268 } else { 1272 - __u16 src_map = fl.fld_src; 1269 + __le16 src_map = fl.fld_src; 1273 1270 free_res = 1; 1274 1271 1275 1272 out_dev = DN_FIB_RES_DEV(res);
+9 -9
net/decnet/dn_rules.c
··· 46 46 unsigned char r_action; 47 47 unsigned char r_dst_len; 48 48 unsigned char r_src_len; 49 - dn_address r_src; 50 - dn_address r_srcmask; 51 - dn_address r_dst; 52 - dn_address r_dstmask; 53 - dn_address r_srcmap; 49 + __le16 r_src; 50 + __le16 r_srcmask; 51 + __le16 r_dst; 52 + __le16 r_dstmask; 53 + __le16 r_srcmap; 54 54 u8 r_flags; 55 55 #ifdef CONFIG_DECNET_ROUTE_FWMARK 56 56 u32 r_fwmark; ··· 208 208 { 209 209 struct dn_fib_rule *r, *policy; 210 210 struct dn_fib_table *tb; 211 - dn_address saddr = flp->fld_src; 212 - dn_address daddr = flp->fld_dst; 211 + __le16 saddr = flp->fld_src; 212 + __le16 daddr = flp->fld_dst; 213 213 int err; 214 214 215 215 read_lock(&dn_fib_rules_lock); ··· 259 259 return -ESRCH; 260 260 } 261 261 262 - unsigned dnet_addr_type(__u16 addr) 262 + unsigned dnet_addr_type(__le16 addr) 263 263 { 264 264 struct flowi fl = { .nl_u = { .dn_u = { .daddr = addr } } }; 265 265 struct dn_fib_res res; ··· 277 277 return ret; 278 278 } 279 279 280 - __u16 dn_fib_rules_policy(__u16 saddr, struct dn_fib_res *res, unsigned *flags) 280 + __le16 dn_fib_rules_policy(__le16 saddr, struct dn_fib_res *res, unsigned *flags) 281 281 { 282 282 struct dn_fib_rule *r = res->r; 283 283
+6 -6
net/decnet/dn_table.c
··· 46 46 u32 dz_hashmask; 47 47 #define DZ_HASHMASK(dz) ((dz)->dz_hashmask) 48 48 int dz_order; 49 - u16 dz_mask; 49 + __le16 dz_mask; 50 50 #define DZ_MASK(dz) ((dz)->dz_mask) 51 51 }; 52 52 ··· 84 84 85 85 static inline dn_fib_idx_t dn_hash(dn_fib_key_t key, struct dn_zone *dz) 86 86 { 87 - u16 h = ntohs(key.datum)>>(16 - dz->dz_order); 87 + u16 h = dn_ntohs(key.datum)>>(16 - dz->dz_order); 88 88 h ^= (h >> 10); 89 89 h ^= (h >> 6); 90 90 h &= DZ_HASHMASK(dz); 91 91 return *(dn_fib_idx_t *)&h; 92 92 } 93 93 94 - static inline dn_fib_key_t dz_key(u16 dst, struct dn_zone *dz) 94 + static inline dn_fib_key_t dz_key(__le16 dst, struct dn_zone *dz) 95 95 { 96 96 dn_fib_key_t k; 97 97 k.datum = dst & DZ_MASK(dz); ··· 250 250 251 251 for_nexthops(fi) { 252 252 int attrlen = nhlen - sizeof(struct rtnexthop); 253 - dn_address gw; 253 + __le16 gw; 254 254 255 255 if (attrlen < 0 || (nhlen -= nhp->rtnh_len) < 0) 256 256 return -EINVAL; ··· 457 457 458 458 dz_key_0(key); 459 459 if (rta->rta_dst) { 460 - dn_address dst; 460 + __le16 dst; 461 461 memcpy(&dst, rta->rta_dst, 2); 462 462 if (dst & ~DZ_MASK(dz)) 463 463 return -EINVAL; ··· 593 593 594 594 dz_key_0(key); 595 595 if (rta->rta_dst) { 596 - dn_address dst; 596 + __le16 dst; 597 597 memcpy(&dst, rta->rta_dst, 2); 598 598 if (dst & ~DZ_MASK(dz)) 599 599 return -EINVAL;
+6 -6
net/decnet/sysctl_net_decnet.c
··· 86 86 * Simple routine to parse an ascii DECnet address 87 87 * into a network order address. 88 88 */ 89 - static int parse_addr(dn_address *addr, char *str) 89 + static int parse_addr(__le16 *addr, char *str) 90 90 { 91 - dn_address area, node; 91 + __u16 area, node; 92 92 93 93 while(*str && !ISNUM(*str)) str++; 94 94 ··· 139 139 void **context) 140 140 { 141 141 size_t len; 142 - dn_address addr; 142 + __le16 addr; 143 143 144 144 if (oldval && oldlenp) { 145 145 if (get_user(len, oldlenp)) ··· 147 147 if (len) { 148 148 if (len != sizeof(unsigned short)) 149 149 return -EINVAL; 150 - if (put_user(decnet_address, (unsigned short __user *)oldval)) 150 + if (put_user(decnet_address, (__le16 __user *)oldval)) 151 151 return -EFAULT; 152 152 } 153 153 } 154 154 if (newval && newlen) { 155 155 if (newlen != sizeof(unsigned short)) 156 156 return -EINVAL; 157 - if (get_user(addr, (unsigned short __user *)newval)) 157 + if (get_user(addr, (__le16 __user *)newval)) 158 158 return -EFAULT; 159 159 160 160 dn_dev_devices_off(); ··· 173 173 { 174 174 char addr[DN_ASCBUF_LEN]; 175 175 size_t len; 176 - dn_address dnaddr; 176 + __le16 dnaddr; 177 177 178 178 if (!*lenp || (*ppos && !write)) { 179 179 *lenp = 0;