📄 darwin_ipv6.patch
字号:
+ virtual void SetFamily( int sa_family ) { family = sa_family; }++ public: + int family; protected: //utility function used by IsReflectable Bool16 IsReflectableIPAddr(UInt32 inIPAddr);-+ Bool16 IsReflectableIPAddr(struct in6_addr* inIPAddr);+ StreamInfo* fStreamArray; UInt32 fNumStreams; diff -u --new-file --recursive darwin-start/APIModules/QTSSAccessLogModule/QTSSAccessLogModule.cpp darwin/APIModules/QTSSAccessLogModule/QTSSAccessLogModule.cpp--- darwin-start/APIModules/QTSSAccessLogModule/QTSSAccessLogModule.cpp Mon Jun 10 17:32:49 2002+++ darwin/APIModules/QTSSAccessLogModule/QTSSAccessLogModule.cpp Tue Jul 2 15:31:08 2002@@ -403,13 +403,13 @@ StrPtrLen* theTransportType = &sUnknownStr; SInt64* theCreateTime = NULL; - char localIPAddrBuf[20] = { 0 };+ char localIPAddrBuf[40] = { 0 }; StrPtrLen localIPAddr(localIPAddrBuf, 19); char localDNSBuf[70] = { 0 }; StrPtrLen localDNS(localDNSBuf, 69); - char remoteAddrBuf[20] = { 0 }; + char remoteAddrBuf[40] = { 0 }; StrPtrLen remoteAddr(remoteAddrBuf, 19); char playerIDBuf[ePlayerIDSize] = { 0 }; diff -u --new-file --recursive darwin-start/APIModules/QTSSAdminModule/QTSSAdminModule.cpp darwin/APIModules/QTSSAdminModule/QTSSAdminModule.cpp--- darwin-start/APIModules/QTSSAdminModule/QTSSAdminModule.cpp Mon Jun 10 17:32:49 2002+++ darwin/APIModules/QTSSAdminModule/QTSSAdminModule.cpp Tue Jul 2 15:31:08 2002@@ -27,6 +27,39 @@ Contains: Implements Admin module $Log: QTSSAdminModule.cpp,v $+ Revision 1.2 2002/07/02 07:31:08 wangdong+ + ----------------------------------------------------------------------+ Modified Files:+ + APICommonCode/SDPSourceInfo.cpp APICommonCode/SDPSourceInfo.h+ APICommonCode/SourceInfo.cpp APICommonCode/SourceInfo.h+ APIModules/QTSSAccessLogModule/QTSSAccessLogModule.cpp+ APIModules/QTSSAdminModule/QTSSAdminModule.cpp+ APIModules/QTSSHttpFileModule/QTSSHttpFileModule.cpp+ APIModules/QTSSMP3StreamingModule/QTSSMP3StreamingModule.cpp+ APIModules/QTSSReflectorModule/QTSSRelayModule.cpp+ APIModules/QTSSReflectorModule/RCFSourceInfo.cpp+ APIModules/QTSSReflectorModule/RTPSessionOutput.cpp+ APIModules/QTSSReflectorModule/RTSPSourceInfo.cpp+ APIModules/QTSSReflectorModule/RTSPSourceInfo.h+ APIModules/QTSSReflectorModule/ReflectorSession.cpp+ APIModules/QTSSReflectorModule/ReflectorStream.cpp+ APIModules/QTSSReflectorModule/ReflectorStream.h+ APIModules/QTSSReflectorModule/RelayOutput.cpp+ APIModules/QTSSReflectorModule/RelaySDPSourceInfo.cpp+ APIModules/QTSSReflectorModule/RelaySession.cpp+ APIModules/QTSSReflectorModule/RelaySession.h+ APIModules/QTSSSpamDefenseModule.bproj/QTSSSpamDefenseModule.cpp+ CommonUtilitiesLib/UDPDemuxer.h Server.tproj/QTSServer.cpp+ Server.tproj/RTSPSessionInterface.cpp+ + add ipv6 support.+ + TODO:+ stop after a minute. it needs to be modified.+ ----------------------------------------------------------------------+ Revision 1.1.1.1 2002/06/10 09:32:49 wangdong Start project! @@ -340,7 +373,7 @@ #define kNumComponents 4 static StrPtrLen sLocalLoopComponents[kNumComponents];-#define kRemoteAddressSize 20+#define kRemoteAddressSize 40 //static char* sAdministrator = "streamingadmin"; diff -u --new-file --recursive darwin-start/APIModules/QTSSHttpFileModule/QTSSHttpFileModule.cpp darwin/APIModules/QTSSHttpFileModule/QTSSHttpFileModule.cpp--- darwin-start/APIModules/QTSSHttpFileModule/QTSSHttpFileModule.cpp Mon Jun 10 17:32:49 2002+++ darwin/APIModules/QTSSHttpFileModule/QTSSHttpFileModule.cpp Tue Jul 2 15:31:08 2002@@ -476,7 +476,7 @@ UInt32 headerLength = sZero; UInt32 fileBufferLen = sZero; - char serverIPAddrBuf[20] = { 0 };+ char serverIPAddrBuf[40] = { 0 }; StrPtrLen serverIPAddr(serverIPAddrBuf, 19); // Server name // Get the server nameif it's a ref movie transfer@@ -1207,7 +1207,7 @@ // the last byte of each array is untouched. // Get the remost host field- char remoteAddrBuf[20]; + char remoteAddrBuf[40]; StrPtrLen remoteAddr(remoteAddrBuf, 19); if (inRTSPSession != NULL) (void)QTSS_GetValue(inRTSPSession, qtssRTSPSesRemoteAddrStr, 0, remoteAddr.Ptr, &remoteAddr.Len);diff -u --new-file --recursive darwin-start/APIModules/QTSSMP3StreamingModule/QTSSMP3StreamingModule.cpp darwin/APIModules/QTSSMP3StreamingModule/QTSSMP3StreamingModule.cpp--- darwin-start/APIModules/QTSSMP3StreamingModule/QTSSMP3StreamingModule.cpp Mon Jun 10 17:32:49 2002+++ darwin/APIModules/QTSSMP3StreamingModule/QTSSMP3StreamingModule.cpp Tue Jul 2 15:31:08 2002@@ -63,7 +63,7 @@ #define kSourceReject "Error - Mount Point Taken or Invalid\r\n" #define kSourceBadPassword "Error - Bad Password\r\n" #define kClientCLHeader "Content-Length: 54000000\r\n\r\n"-#define kRemoteAddressSize 20+#define kRemoteAddressSize 40 #define kBandwidthToAddEstimate 16000 // STATIC DATAdiff -u --new-file --recursive darwin-start/APIModules/QTSSReflectorModule/QTSSRelayModule.cpp darwin/APIModules/QTSSReflectorModule/QTSSRelayModule.cpp--- darwin-start/APIModules/QTSSReflectorModule/QTSSRelayModule.cpp Mon Jun 10 17:32:49 2002+++ darwin/APIModules/QTSSReflectorModule/QTSSRelayModule.cpp Mon Jul 8 15:56:05 2002@@ -623,7 +623,7 @@ UInt32* theIP = 0; theLen = 0; theErr = QTSS_GetValuePtr(inParams->inRTSPSession, qtssRTSPSesRemoteAddr, 0, (void**)&theIP, &theLen);- if ((theErr != QTSS_NoErr) || (theLen != sizeof(UInt32)))+ if ((theErr != QTSS_NoErr) || ((theLen != sizeof(UInt32)) && (theLen != sizeof(struct in6_addr)))) { Assert(0); return QTSS_NoErr;@@ -1055,7 +1055,7 @@ // Get the Remote IP address UInt32* theIP = 0; theErr = QTSS_GetValuePtr(inParams->inRTSPSession, qtssRTSPSesRemoteAddr, 0, (void**)&theIP, &theLen);- if ((theErr != QTSS_NoErr) || (theLen != sizeof(UInt32)))+ if ((theErr != QTSS_NoErr) || (theLen != sizeof(UInt32) && (theLen != sizeof(struct in6_addr)))) { Assert(0); return QTSS_NoErr;@@ -1163,26 +1163,34 @@ { char* destAddrStr = prefTag->GetValue(); if (destAddrStr != NULL)- if (SocketUtils::ConvertStringToAddr(destAddrStr) == INADDR_NONE)+ {+ char *ptr = strchr(destAddrStr, ':');++ if (ptr == NULL && SocketUtils::ConvertStringToAddr(destAddrStr) == INADDR_NONE) { if (doResolution) ResolveDNSAddr(prefTag); else return true; }+ } } prefTag = sourceTag->GetEmbeddedTagByNameAndAttr("PREF", "NAME", "source_addr"); if (prefTag != NULL) { char* srcAddrStr = prefTag->GetValue(); if (srcAddrStr != NULL)- if (SocketUtils::ConvertStringToAddr(srcAddrStr) == INADDR_NONE)+ {+ char *ptr = strchr(srcAddrStr, ':');++ if (ptr == NULL && SocketUtils::ConvertStringToAddr(srcAddrStr) == INADDR_NONE) { if (doResolution) ResolveDNSAddr(prefTag); else return true; }+ } } UInt32 numTags = relayTag->GetNumEmbeddedTags();@@ -1197,26 +1205,34 @@ { char* outAddrStr = prefTag->GetValue(); if (outAddrStr != NULL)- if (SocketUtils::ConvertStringToAddr(outAddrStr) == INADDR_NONE)+ {+ char *ptr = strchr(outAddrStr, ':');++ if (ptr == NULL && SocketUtils::ConvertStringToAddr(outAddrStr) == INADDR_NONE) { if (doResolution) ResolveDNSAddr(prefTag); else return true; }+ } } prefTag = destTag->GetEmbeddedTagByNameAndAttr("PREF", "NAME", "dest_addr"); if (prefTag != NULL) { char* destAddrStr = prefTag->GetValue(); if (destAddrStr != NULL)- if (SocketUtils::ConvertStringToAddr(destAddrStr) == INADDR_NONE)+ {+ char *ptr = strchr(destAddrStr, ':');++ if (ptr == NULL && SocketUtils::ConvertStringToAddr(destAddrStr) == INADDR_NONE) { if (doResolution) ResolveDNSAddr(prefTag); else return true; }+ } } } }@@ -1236,4 +1252,4 @@ SocketUtils::ConvertAddrToString(inAddr, &temp); tag->SetValue(buffer); }-}\ No newline at end of file+}diff -u --new-file --recursive darwin-start/APIModules/QTSSReflectorModule/RCFSourceInfo.cpp darwin/APIModules/QTSSReflectorModule/RCFSourceInfo.cpp--- darwin-start/APIModules/QTSSReflectorModule/RCFSourceInfo.cpp Mon Jun 10 17:32:49 2002+++ darwin/APIModules/QTSSReflectorModule/RCFSourceInfo.cpp Tue Jul 2 15:31:08 2002@@ -78,8 +78,13 @@ return; fNumStreams = 0;- UInt32 destIPAddr = 0;- UInt32 srcIPAddr = 0;+ union {+ UInt32 v4;+ struct in6_addr v6;+ } destIPAddr, srcIPAddr;+ int sFamily = 0;+ bzero( &destIPAddr, sizeof(struct in6_addr));+ bzero( &srcIPAddr, sizeof(struct in6_addr)); UInt16 ttl = 0; XMLTag* prefTag;@@ -88,15 +93,36 @@ if (prefTag != NULL) { char* destAddrStr = prefTag->GetValue();+ if (destAddrStr != NULL)- destIPAddr = SocketUtils::ConvertStringToAddr(destAddrStr);+ {+ char *ptr = strchr( destAddrStr, ':');+ + if (ptr == NULL) // it's v4 address+ {+ destIPAddr.v4 = SocketUtils::ConvertStringToAddr(destAddrStr);+ sFamily = AF_INET;+ }+ else // it's v6 address+ {+ memcpy(&destIPAddr.v6, SocketUtils::ConvertStringToAddr6(destAddrStr), sizeof(struct in6_addr));+ sFamily = AF_INET6;+ }+ } } prefTag = sourceTag->GetEmbeddedTagByNameAndAttr("PREF", "NAME", "source_addr"); if (prefTag != NULL) { char* srcAddrStr = prefTag->GetValue(); if (srcAddrStr != NULL)- srcIPAddr = SocketUtils::ConvertStringToAddr(srcAddrStr);+ {+ char *ptr = strchr( srcAddrStr, ':');+ + if (ptr == NULL) // it's v4 address+ srcIPAddr.v4 = SocketUtils::ConvertStringToAddr(srcAddrStr);+ else // it's v6 address+ memcpy(&srcIPAddr.v6, SocketUtils::ConvertStringToAddr6(srcAddrStr), sizeof(struct in6_addr));+ } } prefTag = sourceTag->GetEmbeddedTagByNameAndAttr("PREF", "NAME", "ttl"); if (prefTag != NULL)@@ -125,8 +151,19 @@ } // Setup all the StreamInfo structures- fStreamArray[x].fSrcIPAddr = srcIPAddr;- fStreamArray[x].fDestIPAddr = destIPAddr;+ if (sFamily == AF_INET)+ {+ fStreamArray[x].fSrcIPAddr.v4 = srcIPAddr.v4;+ fStreamArray[x].fDestIPAddr.v4 = destIPAddr.v4;+ fStreamArray[x].family = AF_INET;+ }+ else if (sFamily == AF_INET6)+ {+ memcpy(&(fStreamArray[x].fSrcIPAddr.v6), &srcIPAddr, sizeof(struct in6_addr));+ memcpy(&(fStreamArray[x].fDestIPAddr.v6), &destIPAddr, sizeof(struct in6_addr));+ fStreamArray[x].family = AF_INET6;+ }+ fStreamArray[x].fPort = port; fStreamArray[x].fTimeToLive = ttl; fStreamArray[x].fPayloadType = qtssUnknownPayloadType;@@ -183,14 +220,40 @@ { char* outAddrStr = prefTag->GetValue(); if (outAddrStr != NULL)- fOutputArray[index].fLocalAddr = SocketUtils::ConvertStringToAddr(outAddrStr);+ {+ char *ptr = strchr( outAddrStr, ':');+ + if (ptr == NULL) // it's v4 address+ {+ fOutputArray[index].fLocalAddr.v4 = SocketUtils::ConvertStringToAddr(outAddrStr);+ fOutputArray[index].family = AF_INET;+ }+ else // it's v6 address+ {+ memcpy(&(fOutputArray[index].fLocalAddr.v6), SocketUtils::ConvertStringToAddr6(outAddrStr), sizeof(struct in6_addr));+ fOutputArray[index].family = AF_INET6;+ }+ } } prefTag = destTag->GetEmbeddedTagByNameAndAttr("PREF", "NAME", "dest_addr"); if (prefTag != NULL) { char* destAddrStr = prefTag->GetValue(); if (destAddrStr != NULL)- fOutputArray[index].fDestAddr = SocketUtils::ConvertStringToAddr(destAddrStr);+ {+ char *ptr = strchr( destAddrStr, ':');+ + if (ptr == NULL) // it's v4 address+ {+ fOutputArray[index].fDestAddr.v4 = SocketUtils::ConvertStringToAddr(destAddrStr);+ fOutputArray[index].family = AF_INET;+ }+ else // it's v6 address+ {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -