aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/in.c
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2024-10-22 08:45:06 +0000
committerKristof Provost <kp@FreeBSD.org>2024-12-17 10:07:12 +0000
commite4e0f497429c635a02897d86c4eb5ec649cc2df8 (patch)
tree0df4521908e9d6b39ee8d81edf31435a854b40fa /sys/netinet/in.c
parent2d7e68d5cd76e82dd81a9d70e30eea5681c05c5e (diff)
Diffstat (limited to 'sys/netinet/in.c')
-rw-r--r--sys/netinet/in.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index c78f0f5758f7..a6f212e9d3ef 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -442,6 +442,27 @@ in_control_ioctl(u_long cmd, void *data, struct ifnet *ifp,
}
int
+in_mask2len(struct in_addr *mask)
+{
+ int x, y;
+ u_char *p;
+
+ p = (u_char *)mask;
+ for (x = 0; x < sizeof(*mask); x++) {
+ if (p[x] != 0xff)
+ break;
+ }
+ y = 0;
+ if (x < sizeof(*mask)) {
+ for (y = 0; y < 8; y++) {
+ if ((p[x] & (0x80 >> y)) == 0)
+ break;
+ }
+ }
+ return (x * 8 + y);
+}
+
+int
in_control(struct socket *so, u_long cmd, void *data, struct ifnet *ifp,
struct thread *td)
{