Mercurial > pidgin.yaz
comparison libpurple/nat-pmp.c @ 23203:313b87adb730
A patch from Peter O'Gorman at The Written Word, Inc. to fix various
portability issues. These changes seemed reasonable, even though I wasn't
able to test or verify them all in particular. Hopefully we don't break
anything on another OS.
Refs #3798
committer: Richard Laager <rlaager@wiktel.com>
author | Peter O'Gorman <pogma@thewrittenword.com> |
---|---|
date | Tue, 27 May 2008 01:11:46 +0000 |
parents | 8972581c2326 |
children | b175f6441bba |
comparison
equal
deleted
inserted
replaced
23202:5197256f66b5 | 23203:313b87adb730 |
---|---|
123 for (i = 0; i < RTAX_MAX; i++) | 123 for (i = 0; i < RTAX_MAX; i++) |
124 { | 124 { |
125 if (bitmask & (1 << i)) | 125 if (bitmask & (1 << i)) |
126 { | 126 { |
127 addrs[i] = sa; | 127 addrs[i] = sa; |
128 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN | |
128 sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) + (char *)sa); | 129 sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) + (char *)sa); |
130 #else | |
131 if (sa->sa_family == AF_INET) | |
132 sa = (struct sockaddr*)(sizeof(struct sockaddr_in) + (char *)sa); | |
133 #ifdef AF_INET6 | |
134 else if (sa->sa_family == AF_INET6) | |
135 sa = (struct sockaddr*)(sizeof(struct sockaddr_in6) + (char *)sa); | |
136 #endif | |
137 #endif | |
129 } | 138 } |
130 else | 139 else |
131 { | 140 { |
132 addrs[i] = NULL; | 141 addrs[i] = NULL; |
133 } | 142 } |
144 | 153 |
145 sin = (struct sockaddr_in *)sa; | 154 sin = (struct sockaddr_in *)sa; |
146 if ((sin->sin_addr.s_addr == INADDR_ANY) && | 155 if ((sin->sin_addr.s_addr == INADDR_ANY) && |
147 mask && | 156 mask && |
148 (ntohl(((struct sockaddr_in *)mask)->sin_addr.s_addr) == 0L || | 157 (ntohl(((struct sockaddr_in *)mask)->sin_addr.s_addr) == 0L || |
149 mask->sa_len == 0)) | 158 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN |
159 mask->sa_len == 0 | |
160 #else | |
161 0 | |
162 #endif | |
163 )) | |
150 return 1; | 164 return 1; |
151 else | 165 else |
152 return 0; | 166 return 0; |
153 } | 167 } |
154 | 168 |