sbgECom Library
4.0.1987-stable
C library to interface SBG Systems IMU/AHRS/INS
|
Network related tools. More...
#include <sbgCommon.h>
Go to the source code of this file.
Macros | |
#define | SBG_IPV4_UNSPECIFIED_ADDR sbgIpAddr(0, 0, 0, 0) |
#define | SBG_IPV4_BROADCAST_ADDR sbgIpAddr(255, 255, 255, 255) |
#define | SBG_NETWORK_IPV4_STRING_SIZE (16) |
Network related tools.
IP v4 address is stored in memory with a uint32_t. Each address component A.B.C.D is stored in 8 bits using the network endianess ie Big Endian.
We thus have the following memory organisation:
In Little Endian: |LSB| | |MSB| | A | B | C | D |
In Big Endian: |MSB| | |LSB| | A | B | C | D |
The MIT license
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define SBG_IPV4_UNSPECIFIED_ADDR sbgIpAddr(0, 0, 0, 0) |
This represents an undefined IP address.
#define SBG_IPV4_BROADCAST_ADDR sbgIpAddr(255, 255, 255, 255) |
Broadcast IP address used to address all devices within the same network.
#define SBG_NETWORK_IPV4_STRING_SIZE (16) |
String size for representation of an IPV4
SBG_INLINE sbgIpAddress sbgIpAddr | ( | uint8_t | a, |
uint8_t | b, | ||
uint8_t | c, | ||
uint8_t | d | ||
) |
Build an IP V4 address in the form a.b.c.d
[in] | a | First 8 bits IP address. |
[in] | b | Second 8 bits IP address. |
[in] | c | Third 8 bits IP address. |
[in] | d | Last 8 bits IP address. |
SBG_INLINE uint8_t sbgIpAddrGetA | ( | sbgIpAddress | ipAddr | ) |
Return the first A field of of an IP v4 address of the form A.B.C.D
[in] | ipAddr | An sbgIpAddress to convert. |
Referenced by sbgIpAddressValid().
SBG_INLINE uint8_t sbgIpAddrGetB | ( | sbgIpAddress | ipAddr | ) |
Return the first B field of of an IP v4 address of the form A.B.C.D
[in] | ipAddr | An sbgIpAddress to convert. |
SBG_INLINE uint8_t sbgIpAddrGetC | ( | sbgIpAddress | ipAddr | ) |
Return the first C field of of an IP v4 address of the form A.B.C.D
[in] | ipAddr | An sbgIpAddress to convert. |
SBG_INLINE uint8_t sbgIpAddrGetD | ( | sbgIpAddress | ipAddr | ) |
Return the first D field of of an IP v4 address of the form A.B.C.D
[in] | ipAddr | An sbgIpAddress to convert. |
SBG_COMMON_LIB_API void sbgNetworkIpToString | ( | sbgIpAddress | ipAddr, |
char * | pBuffer, | ||
size_t | maxSize | ||
) |
Convert an ip to a string of the form A.B.C.D
[in] | ipAddr | IP address to convert to a string. |
[out] | pBuffer | Pointer on an allocated buffer than can hold ip address as a string. |
[in] | maxSize | Maximum number of chars that can be stored in pBuffer including the NULL char. |
SBG_COMMON_LIB_API sbgIpAddress sbgNetworkIpFromString | ( | const char * | pBuffer | ) |
Convert an ip address stored in a string of the form A.B.C.D to an sbgIpAddress object.
[in] | pBuffer | IP address as a string of the form A.B.C.D |
SBG_INLINE sbgIpAddress sbgIpGetNetworkAddr | ( | sbgIpAddress | ipAddress, |
sbgIpAddress | netmask | ||
) |
Given an ip address and the netmask, returns the network part (ip & subnetMask)
[in] | ipAddress | The ip address stored in an uint32_t (host endianness). |
[in] | netmask | The netmask stored in an uint32_t (host endianness). |
SBG_INLINE sbgIpAddress sbgIpGetHostAddr | ( | sbgIpAddress | ipAddress, |
sbgIpAddress | netmask | ||
) |
Given an ip address and the netmask, returns the host part (ip & ~subnetMask)
[in] | ipAddress | The ip address stored in an uint32_t (host endianness). |
[in] | netmask | The netmask stored in an uint32_t (host endianness). |
Referenced by sbgIpAddrWithinSubnet().
SBG_INLINE bool sbgIpAddressIsUnspecified | ( | sbgIpAddress | ipAddress | ) |
Returns true if the provided IP address is unspecified ie (0.0.0.0)
[in] | ipAddress | The ip address to test |
SBG_INLINE bool sbgIpAddressValid | ( | sbgIpAddress | ipAddress | ) |
Check if an IpV4 address is valid. The ip address format is A.B.C.D and A should respect 0 < A < 224
[in] | ipAddress | The ip address stored in an uint32_t (host endianness). |
References sbgIpAddrGetA().
SBG_INLINE sbgIpAddress sbgIpAddrWithinSubnet | ( | sbgIpAddress | ipAddress, |
sbgIpAddress | netmask | ||
) |
Given an ip address and the netmask, returns true if this ip address is within the subnet.
[in] | ipAddress | The ip address stored in an uint32_t (host endianness). |
[in] | netmask | The netmask stored in an uint32_t (host endianness). |
References sbgIpGetHostAddr().
SBG_INLINE bool sbgIpAddrIsSameNetwork | ( | sbgIpAddress | firstIpAddr, |
sbgIpAddress | secondIpAddr, | ||
sbgIpAddress | netmask | ||
) |
Check if two ip addresses are in the same network given the subnet.
[in] | firstIpAddr | The first IP address to check. |
[in] | secondIpAddr | The second IP address to check. |
[in] | netmask | The netmask of the network. |
SBG_COMMON_LIB_API bool sbgIpNetMaskValid | ( | sbgIpAddress | netmask | ) |
Check if an IpV4 netmask is valid, the mask should be contiguous (1111 followed by 0)
[in] | netmask | The netmask stored in an uint32_t (host endianness). |