williamr@2: /** williamr@2: * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file IN_IFACE.H williamr@2: */ williamr@2: williamr@2: #if !defined(__IN_IFACE_H__) williamr@2: #define __IN_IFACE_H__ williamr@2: williamr@2: #if !defined(__IN_SOCK_H__) williamr@2: #include <in_sock.h> williamr@2: #endif williamr@2: williamr@2: #if !defined(__NIFVAR_H__) williamr@2: #include <nifvar.h> williamr@2: #endif williamr@2: williamr@2: // Feature Flags williamr@2: williamr@2: /** williamr@2: Is a loopback interface williamr@2: @internalAll williamr@2: */ williamr@2: const TUint KIfIsLoopback = 0x00000001; williamr@2: williamr@2: /** williamr@2: Is single point to point williamr@2: @internalAll williamr@2: */ williamr@2: const TUint KIfIsPointToPoint = 0x00000002; williamr@2: williamr@2: /** williamr@2: Supports broadcasting williamr@2: @internalAll williamr@2: */ williamr@2: const TUint KIfCanBroadcast = 0x00000004; williamr@2: williamr@2: /** williamr@2: Supports multicasting williamr@2: @internalAll williamr@2: */ williamr@2: const TUint KIfCanMulticast = 0x00000008; williamr@2: williamr@2: /** williamr@2: Can have its MTU set williamr@2: @internalAll williamr@2: */ williamr@2: const TUint KIfCanSetMTU = 0x00000010; williamr@2: williamr@2: /** williamr@2: Has a hardware address (ie needs ARP) williamr@2: @internalAll williamr@2: */ williamr@2: const TUint KIfHasHardwareAddr = 0x00000020; williamr@2: williamr@2: /** williamr@2: Can have its hardware address changed williamr@2: @internalAll williamr@2: */ williamr@2: const TUint KIfCanSetHardwareAddr = 0x00000040; williamr@2: williamr@2: /** williamr@2: Dialup interface williamr@2: @internalAll williamr@2: */ williamr@2: const TUint KIfIsDialup = 0x00000080; williamr@2: williamr@2: // Control options level received by network interfaces williamr@2: /** williamr@2: * Option level for network interface driver options. williamr@2: * @internalTechnology williamr@2: */ williamr@2: const TUint KSOLInterface = 0x203; williamr@2: williamr@2: // Option names williamr@2: /** williamr@2: * The current network interface driver operation parameters are written to the williamr@2: * passed TSoIfInfo structure. williamr@2: * williamr@2: * An interface that supports only this is assumed IPv4 only. williamr@2: * williamr@2: * anOption should be a TPckgBuf<TSoIfInfo>. williamr@2: * williamr@2: * @internalTechnology williamr@2: */ williamr@2: const TUint KSoIfInfo = 0x101; // Get Interface Information williamr@2: williamr@2: /** williamr@2: * Gets the interface's local hardware address, if the link layer is using addresses. williamr@2: * williamr@2: * anOption should be a TPckgBuf<TSoIfInfo>. williamr@2: * williamr@2: * The option is not supported until v7.0. williamr@2: * williamr@2: * @internalTechnology williamr@2: */ williamr@2: const TUint KSoIfHardwareAddr = 0x102; // Get Hardware Address williamr@2: williamr@2: /** williamr@2: * Gets the current network interface driver configuration options. williamr@2: * williamr@2: * There may be three kind of interfaces: IPv4 only, IPv6 only and hybrid IPv4/IPv6. williamr@2: * The last one is passing traffic for both protocols and thus accepts either williamr@2: * family in a single KSoIfConfig call. Hybrid interfaces must be queried twice, williamr@2: * once for IPv4 and once for IPv6, to get both the IPv4 and the IPv6 settings. williamr@2: * williamr@2: * For IPv4, anOption should be a TPckgBuf<TSoInetIfConfig>, for IPv6 TPckgBuf<TSoInet6IfConfig>. williamr@2: * williamr@2: * The iFamily field in either TSoInetIfConfig or TSoInet6IfConfig must be set williamr@2: * to either KAfInet for IPv4 or KAfInet6 for IPv6) before the call. If the family williamr@2: * is not supported by the interface, it returns KErrNotSupported. williamr@2: * williamr@2: * @internalTechnology williamr@2: */ williamr@2: const TUint KSoIfConfig = 0x103; // Get Network parameters williamr@2: williamr@2: /** williamr@2: * For the IPv4 only stack, compares the passed address with the current local williamr@2: * address, and returns KErrBadName if not equal. williamr@2: * williamr@2: * anOption should be a TPckgBuf< TInetAddr >. williamr@2: * williamr@2: * This is not used for the IPv4/v6 stack. williamr@2: * williamr@2: * @internalTechnology williamr@2: */ williamr@2: const TUint KSoIfCompareAddr = 0x104; // Compare address with one passed in williamr@2: williamr@2: /** Retrieve IAP and NID information williamr@2: * williamr@2: * @internalTechnology williamr@2: */ williamr@2: const TUint KSoIfGetConnectionInfo = 0xf001; // Retrieve IAP and NID information williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TUint KMaxInterfaceName=32; williamr@2: williamr@2: /** williamr@2: * Holds the name of a network interface. williamr@2: * williamr@2: * This is used in TSoIfInfo. williamr@2: * williamr@2: * @internalTechnology williamr@2: */ williamr@2: typedef TBuf<KMaxInterfaceName> TInterfaceName; williamr@2: williamr@2: class TInetIfConfig williamr@2: // Information which allows IP to enter route table entries williamr@2: /** williamr@2: * Describes the IP routing options for a network interface. williamr@2: * williamr@2: * It is used in TSoInetIfConfig. williamr@2: * williamr@2: * @internalComponent williamr@2: */ williamr@2: { williamr@2: public: williamr@2: /** Interface IP address. */ williamr@2: TInetAddr iAddress; williamr@2: /** IP netmask. */ williamr@2: TInetAddr iNetMask; williamr@2: /** IP broadcast address. */ williamr@2: TInetAddr iBrdAddr; williamr@2: /** IP default gateway or peer address (if known). */ williamr@2: TInetAddr iDefGate; williamr@2: /** IP primary name server (if any). */ williamr@2: TInetAddr iNameSer1; williamr@2: /** IP secondary name server (if any). */ williamr@2: TInetAddr iNameSer2; williamr@2: }; williamr@2: williamr@2: class TSoIfInfo williamr@2: // Socket option structure for KSoIfInfo williamr@2: /** williamr@2: * Current network interface operation parameters. williamr@2: * williamr@2: * It is returned by RSocket::GetOpt(), when that function is called with anOptionLevel williamr@2: * set to KSOLInterface and anOptionName set to KSoIfInfo. williamr@2: * williamr@2: * @internalTechnology williamr@2: */ williamr@2: { williamr@2: public: williamr@2: /** Feature flags. Possible values are defined in in_iface.h. */ williamr@2: TUint iFeatures; // Feature flags williamr@2: /** Maximum transmission unit. */ williamr@2: TInt iMtu; // Max frame size williamr@2: /** An approximation of the interface speed in Kbps. */ williamr@2: TInt iSpeedMetric; // Indication of performance, approx to Kbps williamr@2: /** Interface protocol name, ipcp::\<port\>. */ williamr@2: TInterfaceName iName; williamr@2: }; williamr@2: williamr@2: class TSoIfHardwareAddr williamr@2: // Socket option structure for KSoIfHardwareAddr williamr@2: /** williamr@2: * An interface's local hardware address. williamr@2: * williamr@2: * This is obtained using KSoIfHardwareAddr. williamr@2: * williamr@2: * @internalComponent williamr@2: */ williamr@2: { williamr@2: public: williamr@2: /** Local hardware address. */ williamr@2: TSockAddr iHardwareAddr; williamr@2: }; williamr@2: williamr@2: class TSoIfConfigBase williamr@2: /** williamr@2: * Base class for TSoInetIfConfig, which simply identifies the protocol family williamr@2: * using the interface. williamr@2: * williamr@2: * @internalComponent williamr@2: */ williamr@2: { williamr@2: public: williamr@2: /** The protocol family, e.g. KAfInet. */ williamr@2: TUint iFamily; williamr@2: }; williamr@2: williamr@2: class TSoInetIfConfig : public TSoIfConfigBase williamr@2: /** williamr@2: * Describes the current interface routing configuration. williamr@2: * williamr@2: * It is returned by RSocket::GetOpt(), when this function is called with anOptionLevel williamr@2: * set to KSOLInterface and anOptionName set to KSoIfConfig. williamr@2: * williamr@2: * @internalTechnology williamr@2: */ williamr@2: { williamr@2: public: williamr@2: /** Current interface routing configuration parameters. */ williamr@2: TInetIfConfig iConfig; williamr@2: }; williamr@2: williamr@2: enum TIfProgressNotification williamr@2: /** williamr@2: * @internalAll williamr@2: * williamr@2: * @deprecated v7.0s - maintained for compatibility with v6.1 williamr@2: * williamr@2: * New software should use the progress ranges defined in nifvar.h williamr@2: * williamr@2: */ williamr@2: { williamr@2: EIfProgressLinkUp = KMinInterfaceProgress, williamr@2: EIfProgressLinkDown, williamr@2: EIfProgressAuthenticationComplete williamr@2: }; williamr@2: williamr@2: /** williamr@2: @internalAll williamr@2: */ williamr@2: const TInt KErrIfAuthenticationFailure = -3050; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfAuthNotSecure = -3051; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfAccountDisabled = -3052; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfRestrictedLogonHours = -3053; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfPasswdExpired = -3054; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfNoDialInPermission = -3055; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfChangingPassword = -3056; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfCallbackNotAcceptable = -3057; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfDNSNotFound = -3058; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TInt KErrIfLRDBadLine = -3059; williamr@2: williamr@2: #endif // __IN_IFACE_H__