<div class="content"><p>The <b>RRouterInterfaceTransportAdd</b> method SHOULD<a id="Appendix_A_Target_269"></a><a aria-label="Product behavior note 269" href="3bb906f0-b077-47ab-ad11-d8d807afde26#Appendix_A_269" data-linktype="relative-path">&lt;269&gt;</a> add a transport (IPX, IPv4,
or IPv6) to a specified interface. Note that if a transport already exists on
an interface it cannot be added.</p><dl>
<dd>
<div><pre> DWORD RRouterInterfaceTransportAdd(
   [in] DIM_HANDLE hDimServer,
   [in] DWORD hInterface,
   [in] DWORD dwTransportId,
   [in] PDIM_INTERFACE_CONTAINER pInfoStruct
 );
</pre></div>
</dd></dl><p><b>hDimServer: </b>A handle to the RRASM server where
the call is to be executed, see section <a href="1f8cdbcc-9791-4a35-ad78-878b8d110e15" data-linktype="relative-path">3.1.3</a>.</p><p><b>hInterface: </b>The unique identifier of an
interface. This can be obtained from <a href="72bead5c-821f-4e98-bacd-0de279552379" data-linktype="relative-path"><b>RRouterInterfaceCreate (section 3.1.4.13)</b></a>
or <a href="b4cc4f8f-e2bc-4e8f-a521-08a0558d3e44" data-linktype="relative-path"><b>RRouterInterfaceGetHandle (section 3.1.4.12)</b></a>.
Because the RRASM server does not maintain the interface handles, the RRAS
server SHOULD check and ensure that this handle represents a valid interface
handle.   </p><p><b>dwTransportId: </b>Specifies the transport (IPX,
IPv4, or IPv6) and MUST be one of the following values.<a id="Appendix_A_Target_270"></a><a aria-label="Product behavior note 270" href="3bb906f0-b077-47ab-ad11-d8d807afde26#Appendix_A_270" data-linktype="relative-path">&lt;270&gt;</a> Otherwise an error, other
than those in the return values table, is returned.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>
  <p>PID_IPX</p>
  <p>0x0000002B</p>
  </td>
  <td>
  <p>IPX protocol </p>
  </td>
 </tr><tr>
  <td>
  <p>PID_IP</p>
  <p>0x00000021</p>
  </td>
  <td>
  <p>IPv4 protocol</p>
  </td>
 </tr><tr>
  <td>
  <p>PID_IPV6</p>
  <p>0x00000057</p>
  </td>
  <td>
  <p>IPv6 protocol</p>
  </td>
 </tr></tbody></table>
</dd></dl><p><b>pInfoStruct: </b>This is a pointer of type <a href="61dfdb82-d5dd-4589-86ec-3aeb6b64ea20" data-linktype="relative-path"><b>DIM_INTERFACE_CONTAINER (section 2.2.1.2.2)</b></a>.
</p><p><b>pInterfaceInfo</b> and <b>dwInterfaceInfoSize</b>
of <b>DIM_INTERFACE_CONTAINER</b> MUST be set to valid values. All other <b>DIM_INTERFACE_CONTAINER</b>
fields are ignored. </p><p><b>pInterfaceInfo</b> points to a valid <a href="402d2cc2-dd94-487a-9bb1-fab6728c3e7d" data-linktype="relative-path"><b>RTR_INFO_BLOCK_HEADER (section 2.2.1.2.3)</b></a>
and <a href="c99955ec-6d18-4665-8d5b-e124de63a368" data-linktype="relative-path"><b>RTR_TOC_ENTRY (section 2.2.1.2.4)</b></a>.
Otherwise, an error is returned. The RRASM server does not store the interface
configurations for the various transports that the RRAS server supports. As
part of its processing, the RRAS server SHOULD check that <b>InfoType</b> of <b>RTR_TOC_ENTRY</b>
is supported.    </p><dl>
<dd>
<p>Only a combination of the following entries SHOULD<a id="Appendix_A_Target_271"></a><a aria-label="Product behavior note 271" href="3bb906f0-b077-47ab-ad11-d8d807afde26#Appendix_A_271" data-linktype="relative-path">&lt;271&gt;</a> be present in <b>pInterfaceInfo</b>.
</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning and conditions (interface means the one
   identified by hInterface)</p>
   </th>
   <th>
   <p>Structure pointed to at offset</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>
  <p>IP_IN_FILTER_INFO</p>
  <p>0xFFFF0001</p>
  </td>
  <td>
  <p>This is the input filter that MUST be applied to IP
  packets sent to the RRAS server. The information is overwritten. The
  interface MUST NOT be of type ROUTER_IF_TYPE_INTERNAL,
  ROUTER_IF_TYPE_LOOPBACK, or ROUTER_IF_TYPE_DIALOUT.</p>
  </td>
  <td>
  <p><a href="4df61e3b-10c2-486a-a8ae-e6613491116b" data-linktype="relative-path">FILTER_DESCRIPTOR (section 2.2.1.2.5)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>IP_OUT_FILTER_INFO</p>
  <p>0xFFFF0002</p>
  </td>
  <td>
  <p>This is the output filter that MUST be applied to IP
  packets sent from the RRAS server. The information is overwritten. The
  interface MUST NOT be of type ROUTER_IF_TYPE_INTERNAL,
  ROUTER_IF_TYPE_LOOPBACK, or ROUTER_IF_TYPE_DIALOUT.</p>
  </td>
  <td>
  <p>FILTER_DESCRIPTOR (section 2.2.1.2.5)</p>
  </td>
 </tr><tr>
  <td>
  <p>IP_INTERFACE_STATUS_INFO</p>
  <p>0xFFFF0004</p>
  </td>
  <td>
  <p>The interface IP status info is overwritten.</p>
  </td>
  <td>
  <p><a href="71de36ba-8cc5-4486-897f-18255b0a5bd3" data-linktype="relative-path">INTERFACE_STATUS_INFO (section 2.2.1.2.18)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>IP_ROUTER_DISC_INFO</p>
  <p>0xFFFF0007</p>
  </td>
  <td>
  <p>Router discovery information is overwritten.</p>
  </td>
  <td>
  <p><a href="f7ffac77-b97e-415b-aed9-3203f785fb0d" data-linktype="relative-path">RTR_DISC_INFO (section 2.2.1.2.14)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>IP_MCAST_BOUNDARY_INFO</p>
  <p>0xFFFF000B</p>
  </td>
  <td>
  <p>Multicast boundary information is added.</p>
  </td>
  <td>
  <p><a href="b9cc44e7-6047-4e0d-9bae-ffbd4b50b4e2" data-linktype="relative-path">MIB_BOUNDARYROW (section 2.2.1.2.24)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>IP_IFFILTER_INFO</p>
  <p>0xFFFF000D</p>
  </td>
  <td>
  <p>IP interface filter information is overwritten.
  Interface MUST NOT be of type ROUTER_IF_TYPE_INTERNAL,
  ROUTER_IF_TYPE_LOOPBACK, or ROUTER_IF_TYPE_DIALOUT.</p>
  </td>
  <td>
  <p><a href="968cc06e-2533-4566-887d-d2917c5f0538" data-linktype="relative-path">IFFILTER_INFO (section 2.2.1.2.88)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>IP_MCAST_LIMIT_INFO</p>
  <p>0xFFFF000E</p>
  </td>
  <td>
  <p>Multicast configuration information.</p>
  </td>
  <td>
  <p><a href="8e668e2d-0ccd-456f-b589-0d4dd97209a7" data-linktype="relative-path">MIB_MCAST_LIMIT_ROW (section 2.2.1.2.16)</a>
  </p>
  </td>
 </tr><tr>
  <td>
  <p>IP_ROUTE_INFO</p>
  <p>0xFFFF0005</p>
  </td>
  <td>
  <p>The <b>dwAdminStatus</b> MUST be IF_ADMIN_STATUS_UP if
  the route information is added.</p>
  <p>If bV4 of <b>INTERFACE_ROUTE_INFO</b> is set, it
  indicates an IPv4 route is added; otherwise, an IPv6 route is added.</p>
  </td>
  <td>
  <p><a href="784d8544-140a-4769-b659-7d3168de9242" data-linktype="relative-path">INTERFACE_ROUTE_INFO (section 2.2.1.2.11)</a>
  </p>
  </td>
 </tr><tr>
  <td>
  <p>IP_IN_FILTER_INFO_V6</p>
  <p>0xFFFF0011</p>
  </td>
  <td>
  <p>This is the input filter that MUST be applied to IPv6
  packets sent to the RRAS server. The information is overwritten. The
  interface MUST NOT be of type ROUTER_IF_TYPE_INTERNAL,
  ROUTER_IF_TYPE_LOOPBACK, or ROUTER_IF_TYPE_DIALOUT.</p>
  </td>
  <td>
  <p><a href="3d3c143f-3da6-45d0-9152-37baa976f3c8" data-linktype="relative-path">FILTER_DESCRIPTOR_V6 (section 2.2.1.2.7)</a>
  </p>
  </td>
 </tr><tr>
  <td>
  <p>IP_OUT_FILTER_INFO_V6</p>
  <p>0xFFFF0012</p>
  </td>
  <td>
  <p>This is the output filter that MUST be applied to IPv6
  packets sent from the RRAS server. The information is overwritten. The
  interface MUST NOT be of type ROUTER_IF_TYPE_INTERNAL,
  ROUTER_IF_TYPE_LOOPBACK, or ROUTER_IF_TYPE_DIALOUT.</p>
  </td>
  <td>
  <p>FILTER_DESCRIPTOR_V6 (section 2.2.1.2.7) </p>
  </td>
 </tr><tr>
  <td>
  <p>IP_DEMAND_DIAL_FILTER_INFO_V6</p>
  <p>0xFFFF0013</p>
  </td>
  <td>
  <p>IPv6 traffic that matches this filter indicates that a
  site-to-site connection MUST be available and all IPv6 packets matching this
  filter MUST be routed into the connection. The interface MUST be of type
  ROUTER_IF_TYPE_FULL_ROUTER or ROUTER_IF_TYPE_HOME_ROUTER and the filters are
  overwritten</p>
  </td>
  <td>
  <p>FILTER_DESCRIPTOR_V6 (section 2.2.1.2.7) </p>
  </td>
 </tr><tr>
  <td>
  <p>IP_IFFILTER_INFO_V6</p>
  <p>0xFFFF0014</p>
  </td>
  <td>
  <p>IPv6 interface filter information is overwritten. The
  interface MUST NOT be of type ROUTER_IF_TYPE_INTERNAL,
  ROUTER_IF_TYPE_LOOPBACK, or ROUTER_IF_TYPE_DIALOUT.</p>
  </td>
  <td>
  <p>IFFILTER_INFO (section 2.2.1.2.88) </p>
  </td>
 </tr><tr>
  <td>
  <p>MS_IP_BOOTP</p>
  <p>0x0000270F</p>
  </td>
  <td>
  <p>IP BOOTP interface, information depending.</p>
  </td>
  <td>
  <p><a href="7c328ccb-406a-4e6c-9987-e89297d9ac89" data-linktype="relative-path">IPBOOTP_IF_CONFIG (section 2.2.1.2.150)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>MS_IP_IGMP</p>
  <p>0x4137000A</p>
  </td>
  <td>
  <p>IGMP interface information.</p>
  </td>
  <td>
  <p><a href="a5faf030-9152-4e68-82a4-5451267586bb" data-linktype="relative-path">IGMP_MIB_IF_CONFIG (section 2.2.1.2.174)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>MS_IP_RIP</p>
  <p>0x00000008</p>
  </td>
  <td>
  <p>IP RIP interface information.</p>
  </td>
  <td>
  <p><a href="7053ff8a-73fc-4557-b7d5-fce2dccd9382" data-linktype="relative-path">IPRIP_IF_CONFIG (section 2.2.1.2.166)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>MS_IP_DHCP_ALLOCATOR</p>
  <p>0x81372714</p>
  </td>
  <td>
  <p>DHCP allocator interface information.</p>
  <p>Used only with <a href="071439e7-a9fd-40e4-91f7-ab756108e82f" data-linktype="relative-path">RRouterInterfaceTransportSetGlobalInfo (section 3.1.4.10)</a>.</p>
  </td>
  <td>
  <p>IP_AUTO_DHCP_INTERFACE_INFO (section <a href="5e791bf2-b33e-45a5-a6da-4a7aac04acba" data-linktype="relative-path">2.2.1.2.192)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>MS_IP_DNS_PROXY</p>
  <p>0x81372713</p>
  </td>
  <td>
  <p>DNS proxy interface information.</p>
  </td>
  <td>
  <p>IP_DNS_PROXY_INTERFACE_INFO (section <a href="fd724ece-760f-4cd1-8f20-2fb1e587492b" data-linktype="relative-path">2.2.1.2.194)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>MS_IP_NAT</p>
  <p>0x81372715</p>
  </td>
  <td>
  <p>IP NAT interface information.</p>
  </td>
  <td>
  <p>IP_NAT_INTERFACE_INFO (section <a href="a16a3b99-8c59-44fa-b74f-d154f0eca5f9" data-linktype="relative-path">2.2.1.2.197)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>MS_IP_OSPF<a id="Appendix_A_Target_272"></a><a aria-label="Product behavior note 272" href="3bb906f0-b077-47ab-ad11-d8d807afde26#Appendix_A_272" data-linktype="relative-path">&lt;272&gt;</a></p>
  <p>0x0000000D</p>
  </td>
  <td>
  <p>OSPF interface information is added.</p>
  </td>
  <td>
  <p>OSPF_INTERFACE_PARAM (section <a href="a74c9676-a5d5-4075-833b-b2276942f482" data-linktype="relative-path">2.2.1.2.215)</a></p>
  </td>
 </tr><tr>
  <td>
  <p>MS_IPV6_DHCP</p>
  <p>0x000003E7</p>
  </td>
  <td>
  <p>DHCPv6 Relay interface information.</p>
  </td>
  <td>
  <p><a href="b769ac0a-a546-46b2-9f81-afc05bf5bd91" data-linktype="relative-path">DHCPV6R_IF_CONFIG (section 2.2.1.2.159)</a></p>
  </td>
 </tr></tbody></table>
</dd></dl><p><b>Return Values: </b>A 32-bit, unsigned integer
value that indicates return status. A return value of ERROR_SUCCESS
(0x00000000) indicates that the operation was completed successfully; otherwise
it contains an error code, as specified in <a href="../ms-erref/1bc92ddf-b79e-413c-bbaa-99a5281a6c90" data-linktype="relative-path">[MS-ERREF]</a>
or in section <a href="5c0c991a-0d3d-4fe5-9503-5128d0d49fe1" data-linktype="relative-path">2.2.4</a>.
All values not in the following table MUST be treated the same by the RRASM
client.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Return value/code</p>
   </th>
   <th>
   <p>Description</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>
  <p>ERROR_SUCCESS</p>
  <p>0x00000000</p>
  </td>
  <td>
  <p>The call was successful.</p>
  </td>
 </tr><tr>
  <td>
  <p>ERROR_ACCESS_DENIED</p>
  <p>0x00000005</p>
  </td>
  <td>
  <p>The calling application does not have sufficient
  privileges, as specified in <a href="9373431f-ed29-4639-9f8b-743267c9f9b6" data-linktype="relative-path">2.1.1.1</a>.</p>
  </td>
 </tr></tbody></table>
</dd></dl><p>The opnum field value for this method is 17.</p><p> When processing this call, the RRASM server MUST do the
following:</p><ul><li><p><span><span> 
</span></span>Validate, as specified in 2.1.1.1, whether this method was called
by a client that has access to the method. If the client does not have access,
then return error ERROR_ACCESS_DENIED (0x00000005).</p>
</li><li><p><span><span> 
</span></span>If <i>pInfoStruct</i> is NULL, return an error other than those
in the preceding table.</p>
</li><li><p><span><span> 
</span></span>If <i>dwTransportId </i>is not specified in the <b>SupportedTransportsList</b>,
return an error other than those specified in the preceding table.</p>
</li><li><p><span><span> 
</span></span>Call the abstract interface <b>Invoke DIMSVC</b> method
specifying the operation and the parameters to enable RRAS server to perform
the required management task.</p>
</li><li><p><span><span> 
</span></span>Return any error status provided by the RRAS server processing.
Otherwise return ERROR_SUCCESS (0x00000000).</p>
</li></ul><p>No exceptions are thrown beyond those thrown by the
underlying RPC protocol <a href="../ms-rpce/290c38b1-92fe-4229-91e6-4fc376610c15" data-linktype="relative-path">[MS-RPCE]</a>.</p></div>