⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iflib.c

📁 VXWORKS源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
** This routine gets the Internet address of a specified network interface and* copies it to <interfaceAddress>. This pointer should point to a buffer* large enough to contain INET_ADDR_LEN bytes.** RETURNS: OK or ERROR.** SEE ALSO: ifAddrSet(), ifDstAddrSet(), ifDstAddrGet()*/STATUS ifAddrGet    (    char *interfaceName,        /* name of interface, i.e. ei0 */    char *interfaceAddress      /* buffer for Internet address */    )    {    return (ifAddrParamGet (interfaceName, SIOCGIFADDR, interfaceAddress));    }/********************************************************************************* ifBroadcastSet - set the broadcast address for a network interface** This routine assigns a broadcast address for the specified network interface.* The broadcast address must be a string in standard Internet address format* (e.g., 90.0.0.0).** An interface's default broadcast address is its Internet address with a* host part of all ones (e.g., 90.255.255.255).  This conforms to current* ARPA specifications.  However, some older systems use an Internet address* with a host part of all zeros as the broadcast address.** NOTE* VxWorks automatically accepts a host part of all zeros as a broadcast* address, in addition to the default or specified broadcast address.  But* if VxWorks is to broadcast to older systems using a host part of all zeros* as the broadcast address, this routine should be used to change the* broadcast address of the interface.** RETURNS: OK or ERROR.*/STATUS ifBroadcastSet    (    char *interfaceName,        /* name of interface to assign, i.e. ei0 */    char *broadcastAddress      /* broadcast address to assign to interface */    )    {    return (ifIoctl (interfaceName, SIOCSIFBRDADDR, (int)broadcastAddress));    }/********************************************************************************* ifBroadcastGet - get the broadcast address for a network interface** This routine gets the broadcast address for a specified network interface.* The broadcast address is copied to the buffer <broadcastAddress>.** RETURNS: OK or ERROR.** SEE ALSO: ifBroadcastSet()*/STATUS ifBroadcastGet    (    char *interfaceName,        /* name of interface, i.e. ei0 */    char *broadcastAddress      /* buffer for broadcast address */    )    {    return (ifAddrParamGet (interfaceName, SIOCGIFBRDADDR, broadcastAddress));    }/********************************************************************************* ifDstAddrSet - define an address for the other end of a point-to-point link** This routine assigns the Internet address of a machine connected to the* opposite end of a point-to-point network connection, such as a SLIP* connection.  Inherently, point-to-point connection-oriented protocols such as* SLIP require that addresses for both ends of a connection be specified.** RETURNS: OK or ERROR.** SEE ALSO: ifAddrSet(), ifDstAddrGet()*/STATUS ifDstAddrSet    (    char *interfaceName,        /* name of interface to configure, i.e. ei0 */    char *dstAddress            /* Internet address to assign to destination */    )    {    return (ifIoctl (interfaceName, SIOCSIFDSTADDR, (int)dstAddress));    }/********************************************************************************* ifDstAddrGet - get the Internet address of a point-to-point peer** This routine gets the Internet address of a machine connected to the* opposite end of a point-to-point network connection.  The Internet address is* copied to the buffer <dstAddress>.** RETURNS: OK or ERROR.** SEE ALSO: ifDstAddrSet(), ifAddrGet()*/STATUS ifDstAddrGet    (    char *interfaceName,        /* name of interface, i.e. ei0 */    char *dstAddress            /* buffer for destination address */    )    {    return (ifAddrParamGet (interfaceName, SIOCGIFDSTADDR, dstAddress));    }/********************************************************************************* ifAddrParamGet - call ifIoctl to get the Internet address of the interface** ifAddrParamGet may be used to retrieve Internet address of the network* interface in ASCII character string representation (dot-notation* like "192.0.0.3").** RETURNS: OK or ERROR** ERRNO: EINVAL** SEE ALSO: ifAddrGet (), ifDstAddrGet (), ifBroadcastGet ()*/LOCAL STATUS ifAddrParamGet    (    char *interfaceName,        /* name of interface to configure, i.e. ei0 */    int   code,                 /* SIOCG ioctl code */    char *address               /* address retrieved here */    )    {    struct in_addr inetAddrBuf;	/* result */    char netString [INET_ADDR_LEN];    if (address == NULL)	{	(void)errnoSet (EINVAL);	return (ERROR);	}    if (ifIoctl (interfaceName, code, (int)&inetAddrBuf) == OK)	{	inet_ntoa_b (inetAddrBuf, netString);	strncpy (address, netString, INET_ADDR_LEN);	return (OK);	}    return (ERROR);    }/********************************************************************************* ifMaskSet - define a subnet for a network interface** This routine allocates additional bits to the network portion of an* Internet address.  The network portion is specified with a mask that must* contain ones in all positions that are to be interpreted as the network* portion.  This includes all the bits that are normally interpreted as the* network portion for the given class of address, plus the bits to be added.* Note that all bits must be contiguous.  The mask is specified in host byte* order.** In order to correctly interpret the address, a subnet mask should be set* for an interface prior to setting the Internet address of the interface* with the routine ifAddrSet().** RETURNS: OK or ERROR.** SEE ALSO: ifAddrSet()*/STATUS ifMaskSet    (    char *interfaceName,   /* name of interface to set mask for, i.e. ei0 */    int netMask            /* subnet mask (e.g. 0xff000000) */    )    {    return (ifIoctl (interfaceName, SIOCSIFNETMASK, htonl (netMask)));    }/********************************************************************************* ifMaskGet - get the subnet mask for a network interface** This routine gets the subnet mask for a specified network interface.* The subnet mask is copied to the buffer <netMask>.  The subnet mask is* returned in host byte order.** RETURNS: OK or ERROR.** SEE ALSO: ifAddrGet(), ifFlagGet()*/STATUS ifMaskGet    (    char *interfaceName,        /* name of interface, i.e. ei0 */    int  *netMask               /* buffer for subnet mask */    )    {    int status = ifIoctl (interfaceName, SIOCGIFNETMASK, (u_long) netMask);    if (status != ERROR)	*netMask = ntohl (*netMask);    return (status);    }/********************************************************************************* ifFlagChange - change the network interface flags** This routine changes the flags for the specified network interfaces.  If* the parameter <on> is TRUE, the specified flags are turned on; otherwise,* they are turned off.  The routines ifFlagGet() and ifFlagSet() are called* to do the actual work.** RETURNS: OK or ERROR.** SEE ALSO: ifAddrSet(), ifMaskSet(), ifFlagSet(), ifFlagGet()*/STATUS ifFlagChange    (    char *interfaceName,        /* name of the network interface, i.e. ei0 */    int   flags,                /* the flag to be changed */    BOOL  on                    /* TRUE=turn on, FALSE=turn off */    )    {    int oldFlags;    if (ifFlagGet (interfaceName, &oldFlags) == ERROR)	{	return (ERROR);	}    if (on)	oldFlags |= flags;    else	oldFlags &= ~flags;    return (ifFlagSet (interfaceName, oldFlags));    }/********************************************************************************* ifFlagSet - specify the flags for a network interface** This routine changes the flags for a specified network interface.* Any combination of the following flags can be specified:** .iP "IFF_UP (0x1)" 20* Brings the network up or down.* .iP "IFF_DEBUG (0x4)"* Turns on debugging for the driver interface if supported.* .iP "IFF_LOOPBACK (0x8)"* Set for a loopback network.* .iP "IFF_NOTRAILERS (0x20)"* Always set (VxWorks does not use the trailer protocol).* .iP "IFF_PROMISC (0x100)"* Tells the driver to accept all packets, not just broadcast packets and* packets addressed to itself. * .iP "IFF_ALLMULTI (0x200)"* Tells the driver to accept all multicast packets.* .iP "IFF_NOARP (0x80)"* Disables ARP for the interface.* .LP** NOTE* The following flags can only be set at interface initialization time.* Specifying these flags does not change any settings in the interface* data structure.** .iP "IFF_POINTOPOINT (0x10)" 20* Identifies a point-to-point interface such as PPP or SLIP.* .iP "IFF_RUNNING (0x40)"* Set when the device turns on.* .iP "IFF_BROADCAST (0x2)"* Identifies a broadcast interface.* .LP** RETURNS: OK or ERROR.** SEE ALSO: ifFlagChange(), ifFlagGet()*/STATUS ifFlagSet    (    char *interfaceName,        /* name of the network interface, i.e. ei0 */    int   flags                 /* network flags */    )    {    return (ifIoctl (interfaceName, SIOCSIFFLAGS, flags));    }/********************************************************************************* ifFlagGet - get the network interface flags** This routine gets the flags for a specified network interface.* The flags are copied to the buffer <flags>.** RETURNS: OK or ERROR.** SEE ALSO: ifFlagSet()*/STATUS ifFlagGet    (    char *interfaceName,        /* name of the network interface, i.e. ei0 */    int  *flags                 /* network flags returned here */    )    {    return (ifIoctl (interfaceName, SIOCGIFFLAGS, (int)flags));    }/********************************************************************************* ifMetricSet - specify a network interface hop count** This routine configures <metric> for a network interface from the host* machine to the destination network.  This information is used primarily by* the IP routing algorithm to compute the relative distance for a collection* of hosts connected to each interface.  For example, a higher <metric> for* SLIP interfaces can be specified to discourage routing a packet to slower* serial line connections.  Note that when <metric> is zero, the IP routing* algorithm allows for the direct sending of a packet having an IP network* address that is not necessarily the same as the local network address.** RETURNS: OK or ERROR.** SEE ALSO: ifMetricGet()*/STATUS ifMetricSet    (    char *interfaceName,        /* name of the network interface, i.e. ei0 */    int   metric                /* metric for this interface */    )    {    return (ifIoctl (interfaceName, SIOCSIFMETRIC, metric));    }/********************************************************************************* ifMetricGet - get the metric for a network interface** This routine retrieves the metric for a specified network interface.* The metric is copied to the buffer <pMetric>.** RETURNS: OK or ERROR.** SEE ALSO: ifMetricSet()*/STATUS ifMetricGet    (    char *interfaceName,        /* name of the network interface, i.e. ei0 */    int  *pMetric               /* returned interface's metric */    )    {    return (ifIoctl (interfaceName, SIOCGIFMETRIC, (int)pMetric));    }/********************************************************************************* ifIoctl - network interface ioctl front-end** Used to manipulate the characteristics of network interfaces* using socket specific ioctl functions SIOCSIFADDR, SIOCSIFBRDADDR, etc.* ifIoctl() accomplishes this by calling ifIoctlSet() and ifIoctlGet().** RETURNS: OK or ERROR** ERRNO: EOPNOTSUPP*/LOCAL STATUS ifIoctl    (    char *interfaceName,        /* name of the interface, i.e. ei0 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -