47const ip_addr_t ip_addr_any = IPADDR4_INIT(
IPADDR_ANY);
58ip4_addr_isbroadcast_u32(u32_t addr,
const struct netif *
netif)
76 }
else if (ip4_addr_net_eq(&ipaddr, netif_ip4_addr(
netif), netif_ip4_netmask(
netif))
93ip4_addr_netmask_valid(u32_t netmask)
96 u32_t nm_hostorder = lwip_htonl(netmask);
99 for (mask = 1UL << 31 ; mask != 0; mask >>= 1) {
100 if ((nm_hostorder & mask) == 0) {
105 for (; mask != 0; mask >>= 1) {
106 if ((nm_hostorder & mask) != 0) {
123ipaddr_addr(
const char *cp)
127 if (ip4addr_aton(cp, &val)) {
160 if (!lwip_isdigit(c)) {
167 if (c ==
'x' || c ==
'X') {
175 if (lwip_isdigit(c)) {
176 if((base == 8) && ((u32_t)(c -
'0') >= 8))
178 val = (val * base) + (u32_t)(c -
'0');
180 }
else if (base == 16 && lwip_isxdigit(c)) {
181 val = (val << 4) | (u32_t)(c + 10 - (lwip_islower(c) ?
'a' :
'A'));
194 if (pp >= parts + 3) {
206 if (c !=
'\0' && !lwip_isspace(c)) {
213 switch (pp - parts + 1) {
222 if (val > 0xffffffUL) {
225 if (parts[0] > 0xff) {
228 val |= parts[0] << 24;
235 if ((parts[0] > 0xff) || (parts[1] > 0xff)) {
238 val |= (parts[0] << 24) | (parts[1] << 16);
245 if ((parts[0] > 0xff) || (parts[1] > 0xff) || (parts[2] > 0xff)) {
248 val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
251 LWIP_ASSERT(
"unhandled", 0);
271 static char str[IP4ADDR_STRLEN_MAX];
272 return ip4addr_ntoa_r(addr, str, IP4ADDR_STRLEN_MAX);
285ip4addr_ntoa_r(
const ip4_addr_t *addr,
char *buf,
int buflen)
299 ap = (u8_t *)&s_addr;
300 for (n = 0; n < 4; n++) {
303 rem = *ap % (u8_t)10;
305 inv[i++] = (char)(
'0' + rem);
308 if (len++ >= buflen) {
313 if (len++ >= buflen) {
#define ip4_addr_get_u32(src_ipaddr)
#define ip4_addr_set_u32(dest_ipaddr, src_u32)
#define NETIF_FLAG_BROADCAST
char * ip4addr_ntoa(const ip4_addr_t *addr)
struct ip4_addr ip4_addr_t