Changes between Version 1 and Version 2 of MapGuideRfc118


Ignore:
Timestamp:
Jul 4, 2011, 2:04:16 AM (13 years ago)
Author:
wuma
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc118

    v1 v2  
     1= !MapGuide RFC 118 - Support IPv6 =
     2
     3This page contains a change request (RFC) for the !MapGuide Open Source project.
     4More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page.
     5
     6
     7== Status ==
     8
     9||RFC Template Version||(1.0)||
     10||Submission Date||04 July 2011||
     11||Last Modified||04 July 2011||
     12||Author||Mars Wu||
     13||RFC Status||draft||
     14||Implementation Status||pending||
     15||Proposed Milestone||2.3||
     16||Assigned PSC guide(s)||Bruce Dechant||
     17||'''Voting History'''||(vote date)||
     18||+1||||
     19||+0||||
     20||-0||||
     21||-1||||
     22||no vote|| ||
     23
    124== Overview ==
    225
    3 This RFC is for making MGOS support IPv6.
     26This RFC proposes a solution to make MGOS work with both IPv4 and IPv6.
     27
     28== Motivation ==
     29
     30IPv6 is the trend of network. Supporting IPv6 will be a must-have for MGOS in the future.
     31
     32== Proposed Solution ==
     33
     34To make MGOS support IPv6, couple things need be done:
     35 1. '''Enable IPv6 for ACE'''.
     36ACE supports both IPv4 and IPv6. But by default, ACE is compiled without IPv6 support. To change this, one compiler predriective should be defined:
     37{{{
     38#define ACE_HAS_IPV6
     39}}}
     40It should be defined in config.h so that it could be effective for both Windows and Linux
     41 2. '''Port the IP address validation logic'''.
     42There is existing logic to validate if the IP address specified in the configuration file is valid. But the logic always assumes the IP address is in v4 format. We need port the logic to consider both v4 format and v6 format. One example is like below in
     43in {{{\Common\MapGuideCommon\Util\IpUtil.cpp}}}.
     44{{{
     45void MgIpUtil::ValidateAddress(CREFSTRING address, bool strict)
     46{
     47...
     48
     49    if (STRING::npos != address.rfind(L':'))
     50    {
     51        MgStringCollection arguments;
     52        arguments.Add(L"1");
     53        arguments.Add(address);
     54
     55        MgStringCollection whyArguments;
     56        whyArguments.Add(L":");
     57
     58        throw new MgInvalidArgumentException(L"MgIpUtil.ValidateAddress",
     59            __LINE__, __WFILE__, &arguments,
     60            L"MgStringContainsReservedCharacters", &whyArguments);
     61    }
     62...
     63}
     64}}}
     65It treats the character ''':''' as invalid. But for IPv6, ''':''' is used as a splitter for the address segments.
     66
     67
     68== Implications ==
     69
     70
     71
     72== Test Plan ==
     73
     74
     75
     76== Funding / Resources ==
     77
     78Autodesk supplied.