Lines Matching +full:row +full:- +full:offset
9 * SPDX-License-Identifier: Apache-2.0
86 *ptr++ = (high < 10) ? (char) (high + '0') : (char) (high - 10 + base); in net_byte_to_hex()
89 *ptr++ = (low < 10) ? (char) (low + '0') : (char) (low - 10 + base); in net_byte_to_hex()
124 blen -= 3U; in net_sprint_ll_addr_buf()
127 if (!(ptr - buf)) { in net_sprint_ll_addr_buf()
131 *(ptr - 1) = '\0'; in net_sprint_ll_addr_buf()
147 for (i = 9; i >= 0; i--, divisor /= 10U) { in net_value_to_udec()
157 return buf - start; in net_value_to_udec()
168 int pos = -1; in z_impl_net_addr_ntop()
172 int len = -1; in z_impl_net_addr_ntop()
179 w = (uint16_t *)addr6->s6_addr16; in z_impl_net_addr_ntop()
204 pos = -1; in z_impl_net_addr_ntop()
221 value = (uint16_t)addr->s4_addr[i]; in z_impl_net_addr_ntop()
241 addr = (struct in_addr *)(&addr6->s6_addr32[3]); in z_impl_net_addr_ntop()
255 i += (int)longest - 1; in z_impl_net_addr_ntop()
272 /* Always pad the low byte, since high byte is non - zero */ in z_impl_net_addr_ntop()
284 if (!(ptr - dst)) { in z_impl_net_addr_ntop()
289 *(ptr - 1) = '\0'; in z_impl_net_addr_ntop()
344 return -EINVAL; in z_impl_net_addr_pton()
353 addr->s4_addr[i] = strtol(src, &endptr, 10); in z_impl_net_addr_pton()
360 * X:X:X:X:X:X:x.x.x.x, and contains only 6 16-bit pieces in z_impl_net_addr_pton()
377 return -EINVAL; in z_impl_net_addr_pton()
385 return -EINVAL; in z_impl_net_addr_pton()
389 /* Normal IPv6 16-bit piece */ in z_impl_net_addr_pton()
391 &addr->s6_addr16[i]); in z_impl_net_addr_pton()
396 if (i < expected_groups - 1) { in z_impl_net_addr_pton()
397 return -EINVAL; in z_impl_net_addr_pton()
404 /* Two colons in a row */ in z_impl_net_addr_pton()
407 UNALIGNED_PUT(0, &addr->s6_addr16[i]); in z_impl_net_addr_pton()
422 tmp--; in z_impl_net_addr_pton()
426 i = expected_groups - 1; in z_impl_net_addr_pton()
429 i--; in z_impl_net_addr_pton()
433 return -EINVAL; in z_impl_net_addr_pton()
435 } while (tmp-- != src); in z_impl_net_addr_pton()
444 return -EINVAL; in z_impl_net_addr_pton()
447 addr->s6_addr[12 + i] = strtol(src, NULL, 10); in z_impl_net_addr_pton()
454 return -EINVAL; in z_impl_net_addr_pton()
460 return -EINVAL; in z_impl_net_addr_pton()
484 return -EINVAL; in z_vrfy_net_addr_pton()
488 return -EINVAL; in z_vrfy_net_addr_pton()
524 * https://blogs.igalia.com/dpino/2018/06/14/fast-checksum-computation/
525 * It’s not necessary to add octets as 16-bit words. Due to the associative property of addition,
526 * it is possible to do parallel addition using larger word sizes such as 32-bit or 64-bit words.
528 * Once the sum is computed a final step folds the sum to a 16-bit word (adding carry if any).
539 * and the offset of starting in calc_chksum()
551 pending--; in calc_chksum()
554 pending -= sizeof(uint16_t); in calc_chksum()
565 pending -= sizeof(uint32_t) * 4; in calc_chksum()
572 pending -= sizeof(uint32_t); in calc_chksum()
577 pending -= sizeof(uint16_t); in calc_chksum()
585 /* Fold sum into 16-bit word. */ in calc_chksum()
591 * and the offset of starting in calc_chksum()
602 struct net_pkt_cursor *cur = &pkt->cursor; in pkt_calc_chksum()
605 if (!cur->buf || !cur->pos) { in pkt_calc_chksum()
609 len = cur->buf->len - (cur->pos - cur->buf->data); in pkt_calc_chksum()
611 while (cur->buf) { in pkt_calc_chksum()
612 sum = calc_chksum(sum, cur->pos, len); in pkt_calc_chksum()
614 cur->buf = cur->buf->frags; in pkt_calc_chksum()
615 if (!cur->buf || !cur->buf->len) { in pkt_calc_chksum()
619 cur->pos = cur->buf->data; in pkt_calc_chksum()
622 sum += *cur->pos; in pkt_calc_chksum()
623 if (sum < *cur->pos) { in pkt_calc_chksum()
627 cur->pos++; in pkt_calc_chksum()
628 len = cur->buf->len - 1; in pkt_calc_chksum()
630 len = cur->buf->len; in pkt_calc_chksum()
649 sum = net_pkt_get_len(pkt) - in net_calc_chksum()
650 net_pkt_ip_hdr_len(pkt) - in net_calc_chksum()
656 sum = net_pkt_get_len(pkt) - in net_calc_chksum()
657 net_pkt_ip_hdr_len(pkt) - in net_calc_chksum()
670 net_pkt_skip(pkt, net_pkt_ip_hdr_len(pkt) - len); in net_calc_chksum()
672 sum = calc_chksum(sum, pkt->cursor.pos, len); in net_calc_chksum()
692 sum = calc_chksum(0, pkt->buffer->data, in net_calc_chksum_ipv4()
754 end = MIN(len, ptr - (str + 1)); in parse_ipv6()
763 addr6 = &net_sin6(addr)->sin6_addr; in parse_ipv6()
770 net_sin6(addr)->sin6_family = AF_INET6; in parse_ipv6()
777 /* -1 as end does not contain first [ in parse_ipv6()
778 * -2 as pointer is advanced by 2, skipping ]: in parse_ipv6()
780 len = str_len - end - 1 - 2; in parse_ipv6()
791 /* Re-use the ipaddr buf for port conversion */ in parse_ipv6()
800 net_sin6(addr)->sin6_port = htons(port); in parse_ipv6()
803 net_addr_ntop(AF_INET6, addr6, ipaddr, sizeof(ipaddr) - 1), in parse_ipv6()
807 net_addr_ntop(AF_INET6, addr6, ipaddr, sizeof(ipaddr) - 1)); in parse_ipv6()
846 end = MIN(len, ptr - str); in parse_ipv4()
854 addr4 = &net_sin(addr)->sin_addr; in parse_ipv4()
861 net_sin(addr)->sin_family = AF_INET; in parse_ipv4()
867 memcpy(ipaddr, ptr + 1, str_len - end - 1); in parse_ipv4()
868 ipaddr[str_len - end - 1] = '\0'; in parse_ipv4()
875 net_sin(addr)->sin_port = htons(port); in parse_ipv4()
878 net_addr_ntop(AF_INET, addr4, ipaddr, sizeof(ipaddr) - 1), in parse_ipv4()
937 if (IS_ENABLED(CONFIG_NET_IPV4) && addr->sa_family == AF_INET && in net_port_set_default()
938 net_sin(addr)->sin_port == 0) { in net_port_set_default()
939 net_sin(addr)->sin_port = htons(default_port); in net_port_set_default()
940 } else if (IS_ENABLED(CONFIG_NET_IPV6) && addr->sa_family == AF_INET6 && in net_port_set_default()
941 net_sin6(addr)->sin6_port == 0) { in net_port_set_default()
942 net_sin6(addr)->sin6_port = htons(default_port); in net_port_set_default()
943 } else if ((IS_ENABLED(CONFIG_NET_IPV4) && addr->sa_family == AF_INET) || in net_port_set_default()
944 (IS_ENABLED(CONFIG_NET_IPV6) && addr->sa_family == AF_INET6)) { in net_port_set_default()
948 return -EINVAL; in net_port_set_default()
963 return -EINVAL; in net_bytes_from_str()