epoc32/include/in_iface.h
branchSymbian2
changeset 2 2fe1408b6811
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/epoc32/include/in_iface.h	Tue Mar 16 16:12:26 2010 +0000
     1.3 @@ -0,0 +1,323 @@
     1.4 +/**
     1.5 +* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.6 +* All rights reserved.
     1.7 +* This component and the accompanying materials are made available
     1.8 +* 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
     1.9 +* which accompanies this distribution, and is available
    1.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.11 +*
    1.12 +* Initial Contributors:
    1.13 +* Nokia Corporation - initial contribution.
    1.14 +*
    1.15 +* Contributors:
    1.16 +*
    1.17 +* Description:
    1.18 +*
    1.19 +*/
    1.20 +
    1.21 +
    1.22 +
    1.23 +
    1.24 +
    1.25 +/**
    1.26 + @file IN_IFACE.H
    1.27 +*/
    1.28 +
    1.29 +#if !defined(__IN_IFACE_H__)
    1.30 +#define __IN_IFACE_H__
    1.31 +
    1.32 +#if !defined(__IN_SOCK_H__)
    1.33 +#include <in_sock.h>
    1.34 +#endif
    1.35 +
    1.36 +#if !defined(__NIFVAR_H__)
    1.37 +#include <nifvar.h>
    1.38 +#endif
    1.39 +
    1.40 +// Feature Flags
    1.41 +
    1.42 +/**
    1.43 +Is a loopback interface
    1.44 +@internalAll
    1.45 +*/
    1.46 +const TUint KIfIsLoopback			= 0x00000001;
    1.47 +
    1.48 +/**
    1.49 +Is single point to point
    1.50 +@internalAll
    1.51 +*/
    1.52 +const TUint KIfIsPointToPoint		= 0x00000002;
    1.53 +
    1.54 +/**
    1.55 +Supports broadcasting
    1.56 +@internalAll
    1.57 +*/
    1.58 +const TUint KIfCanBroadcast			= 0x00000004;
    1.59 +
    1.60 +/**
    1.61 +Supports multicasting
    1.62 +@internalAll
    1.63 +*/	
    1.64 +const TUint KIfCanMulticast			= 0x00000008;
    1.65 +
    1.66 +/**
    1.67 +Can have its MTU	set
    1.68 +@internalAll
    1.69 +*/	
    1.70 +const TUint KIfCanSetMTU			= 0x00000010;
    1.71 +	
    1.72 +/**
    1.73 +Has a hardware address (ie needs ARP)
    1.74 +@internalAll
    1.75 +*/
    1.76 +const TUint KIfHasHardwareAddr		= 0x00000020;	
    1.77 +
    1.78 +/**
    1.79 +Can have its hardware address changed
    1.80 +@internalAll
    1.81 +*/
    1.82 +const TUint KIfCanSetHardwareAddr	= 0x00000040;	
    1.83 +
    1.84 +/**
    1.85 +Dialup interface
    1.86 +@internalAll
    1.87 +*/
    1.88 +const TUint KIfIsDialup				= 0x00000080;	
    1.89 +
    1.90 +// Control options level received by network interfaces
    1.91 +/** 
    1.92 + * Option level for network interface driver options.
    1.93 + * @internalTechnology 
    1.94 + */
    1.95 +const TUint KSOLInterface			= 0x203;
    1.96 +
    1.97 +// Option names
    1.98 +/** 
    1.99 + * The current network interface driver operation parameters are written to the 
   1.100 + * passed TSoIfInfo structure. 
   1.101 + * 
   1.102 + * An interface that supports only this is assumed IPv4 only.
   1.103 + * 
   1.104 + * anOption should be a TPckgBuf<TSoIfInfo>. 
   1.105 + * 
   1.106 + * @internalTechnology
   1.107 + */
   1.108 +const TUint KSoIfInfo				= 0x101;		// Get Interface Information
   1.109 +
   1.110 +/** 
   1.111 + * Gets the interface's local hardware address, if the link layer is using addresses.
   1.112 + * 
   1.113 + * anOption should be a TPckgBuf<TSoIfInfo>.
   1.114 + * 
   1.115 + * The option is not supported until v7.0. 
   1.116 + * 
   1.117 + * @internalTechnology
   1.118 + */
   1.119 +const TUint KSoIfHardwareAddr		= 0x102;		// Get Hardware Address
   1.120 +
   1.121 +/** 
   1.122 + * Gets the current network interface driver configuration options.
   1.123 + * 
   1.124 + * There may be three kind of interfaces: IPv4 only, IPv6 only and hybrid IPv4/IPv6. 
   1.125 + * The last one is passing traffic for both protocols and thus accepts either 
   1.126 + * family in a single KSoIfConfig call. Hybrid interfaces must be queried twice, 
   1.127 + * once for IPv4 and once for IPv6, to get both the IPv4 and the IPv6 settings.
   1.128 + * 
   1.129 + * For IPv4, anOption should be a TPckgBuf<TSoInetIfConfig>, for IPv6 TPckgBuf<TSoInet6IfConfig>.
   1.130 + * 
   1.131 + * The iFamily field in either TSoInetIfConfig or TSoInet6IfConfig must be set 
   1.132 + * to either KAfInet for IPv4 or KAfInet6 for IPv6) before the call. If the family 
   1.133 + * is not supported by the interface, it returns KErrNotSupported. 
   1.134 + * 
   1.135 + * @internalTechnology
   1.136 + */
   1.137 +const TUint KSoIfConfig				= 0x103;		// Get Network parameters
   1.138 +
   1.139 +/** 
   1.140 + * For the IPv4 only stack, compares the passed address with the current local 
   1.141 + * address, and returns KErrBadName if not equal.
   1.142 + * 
   1.143 + * anOption should be a TPckgBuf< TInetAddr >.
   1.144 + * 
   1.145 + * This is not used for the IPv4/v6 stack. 
   1.146 + * 
   1.147 + * @internalTechnology
   1.148 + */
   1.149 +const TUint KSoIfCompareAddr		= 0x104;		// Compare address with one passed in
   1.150 +
   1.151 +/** Retrieve IAP and NID information 
   1.152 + * 
   1.153 + * @internalTechnology
   1.154 + */
   1.155 +const TUint KSoIfGetConnectionInfo	= 0xf001;		// Retrieve IAP and NID information
   1.156 +
   1.157 +/**
   1.158 +@internalComponent
   1.159 +*/
   1.160 +const TUint KMaxInterfaceName=32;
   1.161 +
   1.162 +/** 
   1.163 + * Holds the name of a network interface. 
   1.164 + * 
   1.165 + * This is used in TSoIfInfo. 
   1.166 + * 
   1.167 + * @internalTechnology
   1.168 + */
   1.169 +typedef TBuf<KMaxInterfaceName> TInterfaceName;
   1.170 +
   1.171 +class TInetIfConfig
   1.172 +// Information which allows IP to enter route table entries
   1.173 +/** 
   1.174 + * Describes the IP routing options for a network interface. 
   1.175 + * 
   1.176 + * It is used in TSoInetIfConfig. 
   1.177 + * 
   1.178 + * @internalComponent
   1.179 + */
   1.180 +	{
   1.181 +public:
   1.182 +	/** Interface IP address. */
   1.183 +	TInetAddr iAddress;
   1.184 +	/** IP netmask. */
   1.185 +	TInetAddr iNetMask;
   1.186 +	/** IP broadcast address. */
   1.187 +	TInetAddr iBrdAddr;
   1.188 +	/** IP default gateway or peer address (if known). */
   1.189 +	TInetAddr iDefGate;
   1.190 +	/** IP primary name server (if any). */
   1.191 +	TInetAddr iNameSer1;
   1.192 +	/** IP secondary name server (if any). */
   1.193 +	TInetAddr iNameSer2;
   1.194 +	};
   1.195 +
   1.196 +class TSoIfInfo
   1.197 +// Socket option structure for KSoIfInfo
   1.198 +/** 
   1.199 + * Current network interface operation parameters.
   1.200 + * 
   1.201 + * It is returned by RSocket::GetOpt(), when that function is called with anOptionLevel 
   1.202 + * set to KSOLInterface and anOptionName set to KSoIfInfo. 
   1.203 + *
   1.204 + * @internalTechnology
   1.205 + */
   1.206 +	{
   1.207 +public:
   1.208 +	/** Feature flags. Possible values are defined in in_iface.h. */
   1.209 +	TUint iFeatures;		// Feature flags
   1.210 +	/** Maximum transmission unit. */
   1.211 +	TInt iMtu;				// Max frame size
   1.212 +	/** An approximation of the interface speed in Kbps. */
   1.213 +	TInt iSpeedMetric;		// Indication of performance, approx to Kbps
   1.214 +	/** Interface protocol name, ipcp::\<port\>. */
   1.215 +	TInterfaceName iName;
   1.216 +	};
   1.217 +
   1.218 +class TSoIfHardwareAddr
   1.219 +// Socket option structure for KSoIfHardwareAddr 
   1.220 +/** 
   1.221 + * An interface's local hardware address.
   1.222 + * 
   1.223 + * This is obtained using KSoIfHardwareAddr. 
   1.224 + *
   1.225 + * @internalComponent
   1.226 + */
   1.227 +	{
   1.228 +public:
   1.229 +	/** Local hardware address. */
   1.230 +	TSockAddr iHardwareAddr;
   1.231 +	};
   1.232 +
   1.233 +class TSoIfConfigBase
   1.234 +/** 
   1.235 + * Base class for TSoInetIfConfig, which simply identifies the protocol family 
   1.236 + * using the interface. 
   1.237 + *
   1.238 + * @internalComponent
   1.239 + */
   1.240 +	{
   1.241 +public:
   1.242 +	/** The protocol family, e.g. KAfInet. */
   1.243 +	TUint iFamily;
   1.244 +	};
   1.245 +
   1.246 +class TSoInetIfConfig : public TSoIfConfigBase
   1.247 +/** 
   1.248 + * Describes the current interface routing configuration. 
   1.249 + * 
   1.250 + * It is returned by RSocket::GetOpt(), when this function is called with anOptionLevel 
   1.251 + * set to KSOLInterface and anOptionName set to KSoIfConfig. 
   1.252 + *
   1.253 + * @internalTechnology
   1.254 + */
   1.255 +	{
   1.256 +public:
   1.257 +	/** Current interface routing configuration parameters. */
   1.258 +	TInetIfConfig iConfig;
   1.259 +	};
   1.260 +
   1.261 +enum TIfProgressNotification
   1.262 +/**
   1.263 + * @internalAll
   1.264 + *
   1.265 + * @deprecated v7.0s - maintained for compatibility with v6.1
   1.266 + *
   1.267 + * New software should use the progress ranges defined in nifvar.h
   1.268 + *
   1.269 + */
   1.270 +	{
   1.271 +	EIfProgressLinkUp = KMinInterfaceProgress,
   1.272 +	EIfProgressLinkDown,
   1.273 +	EIfProgressAuthenticationComplete
   1.274 +	};
   1.275 +
   1.276 +/**
   1.277 +@internalAll
   1.278 +*/
   1.279 +const TInt KErrIfAuthenticationFailure = -3050;
   1.280 +
   1.281 +/**
   1.282 +@internalComponent
   1.283 +*/
   1.284 +const TInt KErrIfAuthNotSecure         = -3051;
   1.285 +
   1.286 +/**
   1.287 +@internalComponent
   1.288 +*/
   1.289 +const TInt KErrIfAccountDisabled       = -3052;
   1.290 +
   1.291 +/**
   1.292 +@internalComponent
   1.293 +*/
   1.294 +const TInt KErrIfRestrictedLogonHours  = -3053;
   1.295 +
   1.296 +/**
   1.297 +@internalComponent
   1.298 +*/
   1.299 +const TInt KErrIfPasswdExpired         = -3054;
   1.300 +
   1.301 +/**
   1.302 +@internalComponent
   1.303 +*/
   1.304 +const TInt KErrIfNoDialInPermission    = -3055;
   1.305 +
   1.306 +/**
   1.307 +@internalComponent
   1.308 +*/
   1.309 +const TInt KErrIfChangingPassword      = -3056;
   1.310 +
   1.311 +/**
   1.312 +@internalComponent
   1.313 +*/
   1.314 +const TInt KErrIfCallbackNotAcceptable = -3057;
   1.315 +
   1.316 +/**
   1.317 +@internalComponent
   1.318 +*/
   1.319 +const TInt KErrIfDNSNotFound		   = -3058;
   1.320 +
   1.321 +/**
   1.322 +@internalComponent
   1.323 +*/
   1.324 +const TInt KErrIfLRDBadLine			   = -3059;   
   1.325 +
   1.326 +#endif // __IN_IFACE_H__