//================================================================================ // Copyright (C) 1997 Microsoft Corporation // Author: RameshV // All dealings with the stack and other non-Dhcp components go through the API // given here //================================================================================ #ifndef STACK_H_INCLUDED #define STACK_H_INCLUDED #include //================================================================================ // Exported API's //================================================================================ DWORD // win32 status DhcpClearAllStackParameters( // undo the effects IN PDHCP_CONTEXT DhcpContext // the adapter to undo ); DWORD // win32 status DhcpSetAllStackParameters( // set all stack details IN PDHCP_CONTEXT DhcpContext, // the context to set stuff IN PDHCP_FULL_OPTIONS DhcpOptions // pick up the configuration from off here ); DWORD GetIpPrimaryAddresses( IN PMIB_IPADDRTABLE *IpAddrTable ); DWORD DhcpSetGateways( IN PDHCP_CONTEXT DhcpContext, IN PDHCP_FULL_OPTIONS DhcpOptions, IN BOOLEAN fForceUpdate ); // The classless route layout is: // - 1 byte encoding the route subnet mask // - depending on the mask, 0 to 4 bytes encoding the route destination address // - 4 bytes for the gateway address for the route // The route destination is encoded based on the value of mask: // mask = 0 => destination = 0.0.0.0 (no bytes to encode it) // mask = 1..8 => destination = b1.0.0.0 (1 byte to encode it) // mask = 9..16 => destination = b1.b2.0.0 (2 bytes for encoding) // mask = 17..24 => destination = b1.b2.b3.0 (3 bytes for encoding) // mask = 25..32 => destination = b1.b2.b3.b4 (4 bytes for encoding) #define CLASSLESS_ROUTE_LEN(x) (1+((x)?((((x)-1)>>3)+1):0)+4) DWORD GetCLRoute( IN LPBYTE RouteData, OUT LPBYTE RouteDest, OUT LPBYTE RouteMask, OUT LPBYTE RouteGateway ); DWORD CheckCLRoutes( IN DWORD RoutesDataLen, IN LPBYTE RoutesData, OUT LPDWORD pNRoutes ); DWORD DhcpSetStaticRoutes( IN PDHCP_CONTEXT DhcpContext, IN PDHCP_FULL_OPTIONS DhcpOptions ); DWORD DhcpRegisterWithDns( IN PDHCP_CONTEXT DhcpContext, IN BOOL fDeRegister ); #endif STACK_H_INCLUDED #ifndef SYSSTACK_H_INCLUDED #define SYSSTACK_H_INCLUDED //================================================================================ // imported api's //================================================================================ DWORD // return interface index or -1 DhcpIpGetIfIndex( // get the IF index for this adapter IN PDHCP_CONTEXT DhcpContext // context of adapter to get IfIndex for ); DWORD // win32 status DhcpSetRoute( // set a route with the stack IN DWORD Dest, // network order destination IN DWORD DestMask, // network order destination mask IN DWORD IfIndex, // interface index to route IN DWORD NextHop, // next hop n/w order address IN DWORD Metric, // metric IN BOOL IsLocal, // is this a local address? (IRE_DIRECT) IN BOOL IsDelete // is this route being deleted? ); ULONG TcpIpNotifyRouterDiscoveryOption( IN LPCWSTR AdapterName, IN BOOL fOptionPresent, IN DWORD OptionValue ); #endif SYSSTACK_H_INCLUDED