ReactOS 0.4.15-dev-7846-g8ba6c66
route_reactos.c
Go to the documentation of this file.
1/*
2 * iphlpapi dll implementation -- Setting and storing route information
3 *
4 * These are stubs for functions that set routing information on the target
5 * operating system. They are grouped here because their implementation will
6 * vary widely by operating system.
7 *
8 * Copyright (C) 2004 Art Yerkes
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13 *
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23
24#include <config.h>
25#include "iphlpapi_private.h"
26
27#define IP_FORWARD_ADD 3
28#define IP_FORWARD_DEL 2
29
31
33 HANDLE tcpFile;
37 IPRouteEntry *rte;
39 DWORD returnSize = 0;
40
41 TRACE("Called.\n");
42
43 if( NT_SUCCESS(status) ) {
44 status = getNthIpEntity( tcpFile, pRoute->dwForwardIfIndex, &id );
45
46 if( NT_SUCCESS(status) ) {
50 req.Req.ID.toi_entity.tei_instance = id.tei_instance;
52 req.Req.BufferSize = sizeof(*rte);
53 rte =
54 (IPRouteEntry *)&req.Req.Buffer[0];
55
56 // dwForwardPolicy
57 // dwForwardNextHopAS
58 rte->ire_dest = pRoute->dwForwardDest;
59 rte->ire_mask = pRoute->dwForwardMask;
60 rte->ire_gw = pRoute->dwForwardNextHop;
61 rte->ire_index = pRoute->dwForwardIfIndex;
63 rte->ire_proto = pRoute->dwForwardProto;
64 rte->ire_age = pRoute->dwForwardAge;
65 rte->ire_metric1 = pRoute->dwForwardMetric1;
66 rte->ire_metric2 = pRoute->dwForwardMetric2;
67 rte->ire_metric3 = pRoute->dwForwardMetric3;
68 rte->ire_metric4 = pRoute->dwForwardMetric4;
69 rte->ire_metric5 = pRoute->dwForwardMetric5;
70
71 status = DeviceIoControl( tcpFile,
73 &req,
74 sizeof(req),
75 NULL,
76 0,
77 &returnSize,
78 NULL );
79 }
80
81 closeTcpFile( tcpFile );
82 }
83
84 TRACE("Returning: %08x (IOCTL was %08x)\n", status, IOCTL_TCP_SET_INFORMATION_EX);
85
86 if( NT_SUCCESS(status) )
87 return NO_ERROR;
88 else
89 return status;
90}
91
93 FIXME(":stub\n");
94 return (DWORD) 0;
95}
96
98 HANDLE tcpFile;
102 IPRouteEntry *rte;
104 DWORD returnSize = 0;
105
106 TRACE("Called.\n");
107
108 if( NT_SUCCESS(status) ) {
109 status = getNthIpEntity( tcpFile, pRoute->dwForwardIfIndex, &id );
110
111 if( NT_SUCCESS(status) ) {
115 req.Req.ID.toi_entity.tei_instance = id.tei_instance;
117 req.Req.BufferSize = sizeof(*rte);
118 rte =
119 (IPRouteEntry *)&req.Req.Buffer[0];
120
121 // dwForwardPolicy
122 // dwForwardNextHopAS
123 rte->ire_dest = pRoute->dwForwardDest;
124 rte->ire_mask = INADDR_NONE;
125 rte->ire_gw = pRoute->dwForwardNextHop;
126 rte->ire_index = pRoute->dwForwardIfIndex;
128 rte->ire_proto = pRoute->dwForwardProto;
129 rte->ire_age = pRoute->dwForwardAge;
130 rte->ire_metric1 = pRoute->dwForwardMetric1;
135
136 status = DeviceIoControl( tcpFile,
138 &req,
139 sizeof(req),
140 NULL,
141 0,
142 &returnSize,
143 NULL );
144 }
145
146 closeTcpFile( tcpFile );
147 }
148
149 TRACE("Returning: %08x (IOCTL was %08x)\n", status, IOCTL_TCP_SET_INFORMATION_EX);
150
151 if( NT_SUCCESS(status) )
152 return NO_ERROR;
153 else
154 return status;
155}
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
LONG NTSTATUS
Definition: precomp.h:26
#define INADDR_NONE
Definition: tcp.c:42
#define FIXME(fmt,...)
Definition: debug.h:111
#define NO_ERROR
Definition: dderror.h:5
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: deviceio.c:136
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint id
Definition: glext.h:5910
NTSTATUS getNthIpEntity(HANDLE tcpFile, DWORD index, TDIEntityID *ent)
#define TCP_REQUEST_SET_INFORMATION_INIT
#define FILE_WRITE_DATA
Definition: nt_native.h:631
#define FILE_READ_DATA
Definition: nt_native.h:628
#define IP_FORWARD_DEL
Definition: route_reactos.c:28
DWORD deleteIpForwardEntry(PMIB_IPFORWARDROW pRoute)
Definition: route_reactos.c:97
DWORD setIpForwardEntry(PMIB_IPFORWARDROW pRoute)
Definition: route_reactos.c:92
DWORD createIpForwardEntry(PMIB_IPFORWARDROW pRoute)
Definition: route_reactos.c:32
#define IP_FORWARD_ADD
Definition: route_reactos.c:27
NTSTATUS openTcpFile(PHANDLE tcpFile, ACCESS_MASK DesiredAccess)
Definition: handle.c:12
VOID closeTcpFile(HANDLE h)
Definition: handle.c:43
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long ire_metric2
Definition: tcp_info.c:27
unsigned long ire_metric4
Definition: tcp_info.c:29
unsigned long ire_metric1
Definition: tcp_info.c:26
unsigned long ire_dest
Definition: tcp_info.c:24
unsigned long ire_age
Definition: tcp_info.c:33
unsigned long ire_index
Definition: tcp_info.c:25
unsigned long ire_metric3
Definition: tcp_info.c:28
unsigned long ire_type
Definition: tcp_info.c:31
unsigned long ire_proto
Definition: tcp_info.c:32
unsigned long ire_metric5
Definition: tcp_info.c:35
unsigned long ire_mask
Definition: tcp_info.c:34
DWORD dwForwardMetric5
Definition: ipmib.h:92
DWORD dwForwardNextHop
Definition: ipmib.h:74
DWORD dwForwardMetric2
Definition: ipmib.h:89
DWORD dwForwardMetric3
Definition: ipmib.h:90
DWORD dwForwardProto
Definition: ipmib.h:83
DWORD dwForwardMetric1
Definition: ipmib.h:88
IF_INDEX dwForwardIfIndex
Definition: ipmib.h:75
DWORD dwForwardDest
Definition: ipmib.h:71
DWORD dwForwardMask
Definition: ipmib.h:72
DWORD dwForwardMetric4
Definition: ipmib.h:91
DWORD dwForwardAge
Definition: ipmib.h:86
unsigned char Buffer[1]
Definition: tdiinfo.h:97
ULONG tei_entity
Definition: tdiinfo.h:31
ULONG tei_instance
Definition: tdiinfo.h:32
ULONG toi_id
Definition: tdiinfo.h:77
ULONG toi_type
Definition: tdiinfo.h:76
ULONG toi_class
Definition: tdiinfo.h:75
TDIEntityID toi_entity
Definition: tdiinfo.h:74
Definition: ps.c:97
#define IP_MIB_ARPTABLE_ENTRY_ID
Definition: tcpioctl.h:54
#define INFO_CLASS_PROTOCOL
Definition: tdiinfo.h:65
#define INFO_TYPE_PROVIDER
Definition: tdiinfo.h:69
#define CL_NL_ENTITY
Definition: tdiinfo.h:42
#define IOCTL_TCP_SET_INFORMATION_EX
Definition: tditest.h:112
TCP_REQUEST_SET_INFORMATION_EX Req