Revision: 14835
Author: adrian.chadd
Date: Tue Jan 11 17:04:36 2011
Log: Convert comm.c over to use sqaddr_t's internally.
This currently won't work with ipv6 though - netdb and ipcache APIs still
need to be made ipv6 aware.
http://code.google.com/p/lusca-cache/source/detail?r=14835
Modified:
/playpen/LUSCA_HEAD_ipv6/src/comm.c
=======================================
--- /playpen/LUSCA_HEAD_ipv6/src/comm.c Thu Aug 13 04:35:55 2009
+++ /playpen/LUSCA_HEAD_ipv6/src/comm.c Tue Jan 11 17:04:36 2011
@@ -50,10 +50,9 @@
typedef struct {
char *host;
u_short port;
- struct sockaddr_in S;
CNCB *callback;
void *data;
- struct in_addr in_addr;
+ sqaddr_t in_addr6;
int fd;
int tries;
int addrcount;
@@ -86,8 +85,9 @@
cs->port = port;
cs->callback = callback;
cs->data = data;
+ sqinet_init(&cs->in_addr6);
if (addr != NULL) {
- cs->in_addr = *addr;
+ sqinet_set_v4_inaddr(&cs->in_addr6, addr);
cs->addrcount = 1;
} else {
cs->addrcount = 0;
@@ -119,7 +119,9 @@
return;
}
assert(ia->cur < ia->count);
- cs->in_addr = ia->in_addrs[ia->cur];
+ sqinet_done(&cs->in_addr6);
+ sqinet_init(&cs->in_addr6);
+ sqinet_set_v4_inaddr(&cs->in_addr6, &ia->in_addrs[ia->cur]);
if (Config.onoff.balance_on_multiple_ip)
ipcacheCycleAddr(cs->host, NULL);
cs->addrcount = ia->count;
@@ -151,6 +153,7 @@
if (cs->data)
cbdataUnlock(cs->data);
safe_free(cs->host);
+ sqinet_done(&cs->in_addr6);
cbdataFree(cs);
}
@@ -267,17 +270,12 @@
sqaddr_t a;
ConnectStateData *cs = data;
- if (cs->S.sin_addr.s_addr == 0) {
- cs->S.sin_family = AF_INET;
- cs->S.sin_addr = cs->in_addr;
- cs->S.sin_port = htons(cs->port);
- }
- /*
- * Create a temporary sqaddr_t for now; this should be pushed into
- * ConnectStateData later.
- */
+
+ /* Create a temporary sqaddr_t which also contains the port we're
connecting to */
+ /* This should eventually just be folded into cs->in_addr6 -adrian */
sqinet_init(&a);
- sqinet_set_v4_sockaddr(&a, &cs->S);
+ sqinet_copy(&a, &cs->in_addr6);
+ sqinet_set_port(&a, cs->port, SQADDR_NONE);
r = comm_connect_addr(fd, &a);
sqinet_done(&a);
switch(r) {
@@ -286,14 +284,14 @@
commSetSelect(fd, COMM_SELECT_WRITE, commConnectHandle, cs, 0);
break;
case COMM_OK:
- ipcacheMarkGoodAddr(cs->host, cs->S.sin_addr);
+ ipcacheMarkGoodAddr(cs->host, sqinet_get_v4_inaddr(&cs->in_addr6,
SQADDR_ASSERT_IS_V4));
commConnectCallback(cs, COMM_OK);
break;
default:
cs->tries++;
- ipcacheMarkBadAddr(cs->host, cs->S.sin_addr);
+ ipcacheMarkBadAddr(cs->host, sqinet_get_v4_inaddr(&cs->in_addr6,
SQADDR_ASSERT_IS_V4));
if (Config.onoff.test_reachability)
- netdbDeleteAddrNetwork(cs->S.sin_addr);
+ netdbDeleteAddrNetwork(sqinet_get_v4_inaddr(&cs->in_addr6,
SQADDR_ASSERT_IS_V4));
if (commRetryConnect(cs)) {
eventAdd("commReconnect", commReconnect, cs, cs->addrcount == 1 ?
0.05 : 0.0, 0);
} else {
--
You received this message because you are subscribed to the Google Groups
"lusca-commit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/lusca-commit?hl=en.