Massive commit - changing from sockaddr_in => sockaddr_storage.

In preparation for making RS support IPv6.

NB: This breaks the build of retroshare-gui, as the
sockaddr_storage_xxx fns are only defined as prototypes for now.

All the aux libraries like udp / stun / tcponudp / dht have still to be converted.

These changes will probably break various things and need to be tested thoroughly.




git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-initdev@6735 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2013-09-13 14:35:19 +00:00
parent fd071161bf
commit 6290d8fed9
66 changed files with 1182 additions and 1046 deletions

View file

@ -177,7 +177,7 @@ void p3zcNatAssist::setExternalPort(unsigned short eport_in)
}
}
bool p3zcNatAssist::getInternalAddress(struct sockaddr_in &addr)
bool p3zcNatAssist::getInternalAddress(struct sockaddr_storage &addr)
{
#ifdef DEBUG_ZCNATASSIST
@ -189,7 +189,7 @@ bool p3zcNatAssist::getInternalAddress(struct sockaddr_in &addr)
}
bool p3zcNatAssist::getExternalAddress(struct sockaddr_in &addr)
bool p3zcNatAssist::getExternalAddress(struct sockaddr_storage &addr)
{
RsStackMutex stack(mZcMtx); /****** STACK LOCK MUTEX *******/
@ -397,11 +397,18 @@ void p3zcNatAssist::callbackMapping(DNSServiceRef sdRef, DNSServiceFlags flags,
mMapped = true;
mExternalAddress.sin_addr.s_addr = externalAddress;
mExternalAddress.sin_port = externalPort;
// THIS APPEARS TO BE IPv4 ONLY!.
sockaddr_storage_clear(mExternalAddress);
struct sockaddr_in *addr = (struct sockaddr_in *) &mExternalAddress;
addr->sin_family = AF_INET;
addr->sin_addr.s_addr = externalAddress;
addr->sin_port = externalPort;
mTTL = ttl;
std::cerr << "p3zcNatAssist::callbackMapping() Success";
std::cerr << std::endl;
@ -411,8 +418,7 @@ void p3zcNatAssist::callbackMapping(DNSServiceRef sdRef, DNSServiceFlags flags,
std::cerr << "internalPort: " << ntohs(internalPort);
std::cerr << std::endl;
std::cerr << "externalAddress: " << rs_inet_ntoa(mExternalAddress.sin_addr);
std::cerr << ":" << ntohs(mExternalAddress.sin_port);
std::cerr << "externalAddress: " << sockaddr_storage_tostring(mExternalAddress);
std::cerr << std::endl;
std::cerr << "protocol: " << protocol;

View file

@ -61,8 +61,8 @@ virtual bool getActive();
virtual void setInternalPort(unsigned short iport_in);
virtual void setExternalPort(unsigned short eport_in);
virtual bool getInternalAddress(struct sockaddr_in &addr);
virtual bool getExternalAddress(struct sockaddr_in &addr);
virtual bool getInternalAddress(struct sockaddr_storage &addr);
virtual bool getExternalAddress(struct sockaddr_storage &addr);
/* TO IMPLEMENT: New Port Forward interface to support as many ports as necessary */
virtual bool requestPortForward(const PortForwardParams &params) { return false; }
@ -101,7 +101,7 @@ virtual bool statusPortForward(const uint32_t fwdId, PortForwardParams &param
uint16_t mExternalPort;
bool mExternalPortSet;
struct sockaddr_in mExternalAddress;
struct sockaddr_storage mExternalAddress;
int mTTL;
DNSServiceRef mMappingRef;

View file

@ -236,7 +236,7 @@ bool p3ZeroConf::dropPeer(std::string pid)
/* extract current peer status */
bool p3ZeroConf::getPeerStatus(std::string id,
struct sockaddr_in &/*laddr*/, struct sockaddr_in &/*raddr*/,
struct sockaddr_storage &/*laddr*/, struct sockaddr_storage &/*raddr*/,
uint32_t &/*type*/, uint32_t &/*mode*/)
{
/* remove unused parameter warnings */
@ -251,7 +251,7 @@ bool p3ZeroConf::getPeerStatus(std::string id,
}
#if 0
bool p3ZeroConf::getExternalInterface(struct sockaddr_in &/*raddr*/,
bool p3ZeroConf::getExternalInterface(struct sockaddr_storage &/*raddr*/,
uint32_t &/*mode*/)
{
@ -277,12 +277,12 @@ bool p3ZeroConf::setAttachMode(bool on)
return true;
}
int p3ZeroConf::addBadPeer(const struct sockaddr_in &addr, uint32_t reason, uint32_t flags, uint32_t age)
int p3ZeroConf::addBadPeer(const struct sockaddr_storage &addr, uint32_t reason, uint32_t flags, uint32_t age)
{
return 1;
}
int p3ZeroConf::addKnownPeer(const std::string &pid, const struct sockaddr_in &addr, uint32_t flags)
int p3ZeroConf::addKnownPeer(const std::string &pid, const struct sockaddr_storage &addr, uint32_t flags)
{
return 1;
}
@ -563,7 +563,9 @@ int p3ZeroConf::checkQueryResults()
time_t now = time(NULL);
uint32_t flags = RS_CB_FLAG_MODE_TCP;
uint32_t source = RS_CB_DHT; // SHOULD ADD NEW SOURCE ZC???
struct sockaddr_in dummyProxyAddr, dummySrcAddr;
struct sockaddr_storage dummyProxyAddr, dummySrcAddr;
sockaddr_storage_clear(dummyProxyAddr);
sockaddr_storage_clear(dummySrcAddr);
mConnCb->peerConnectRequest(qr.sslId, qr.addr, dummyProxyAddr, dummySrcAddr,
source, flags, 0, 0);
@ -1145,8 +1147,13 @@ void p3ZeroConf::callbackQueryIp( DNSServiceRef /* sdRef */, DNSServiceFlags fla
if ((rrtype == kDNSServiceType_A) && (rdlen == 4))
{
qr.addr.sin_addr.s_addr = *((uint32_t *) rdata);
// IPV4 type.
sockaddr_storage_clear(qr.addr);
struct sockaddr_in *addr = (struct sockaddr_in *) &(qr.addr);
addr->sin_family = AF_INET;
addr->sin_addr.s_addr = *((uint32_t *) rdata);
addr->sin_port = htons(0);
if (locked_completeQueryResult(qr)) // Saves Query Results, and fills in Port details.
{
mQueryResults.push_back(qr);
@ -1206,7 +1213,7 @@ int p3ZeroConf::locked_completeQueryResult(zcQueryResult &qr)
std::cerr << "p3ZeroConf::locked_completeQueryResults() Filling in Peer IpAddress";
std::cerr << std::endl;
qr.addr.sin_port = htons(lit->second.mPort);
sockaddr_storage_setport(qr.addr, lit->second.mPort);
lit->second.mAddress = qr.addr;
lit->second.mStatus |= ZC_STATUS_IPADDRESS;
lit->second.mAddrTs = time(NULL);

View file

@ -91,7 +91,7 @@ class zcQueryResult
// Extra ones.
std::string sslId;
std::string gpgId;
struct sockaddr_in addr;
struct sockaddr_storage addr;
};
@ -121,7 +121,7 @@ class zcLocationDetails
std::string mFullName;
uint16_t mPort;
struct sockaddr_in mAddress;
struct sockaddr_storage mAddress;
time_t mAddrTs;
};
@ -171,15 +171,15 @@ virtual bool getNetworkStats(uint32_t &netsize, uint32_t &localnetsize);
virtual bool findPeer(std::string id);
virtual bool dropPeer(std::string id);
virtual int addBadPeer(const struct sockaddr_in &addr, uint32_t reason, uint32_t flags, uint32_t age);
virtual int addKnownPeer(const std::string &pid, const struct sockaddr_in &addr, uint32_t flags);
virtual int addBadPeer(const struct sockaddr_storage &addr, uint32_t reason, uint32_t flags, uint32_t age);
virtual int addKnownPeer(const std::string &pid, const struct sockaddr_storage &addr, uint32_t flags);
/* feedback on success failure of Connections */
virtual void ConnectionFeedback(std::string pid, int state);
/* extract current peer status */
virtual bool getPeerStatus(std::string id,
struct sockaddr_in &laddr, struct sockaddr_in &raddr,
struct sockaddr_storage &laddr, struct sockaddr_storage &raddr,
uint32_t &type, uint32_t &mode);
virtual bool setAttachMode(bool on);