Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
2264663c
Commit
2264663c
authored
May 08, 2022
by
Chip Davis
Committed by
Alexandre Julliard
May 13, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nsiproxy.sys: Implement IPv6 ipstats get_all_parameters on Mac OS and BSD.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
84e96960
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
141 additions
and
0 deletions
+141
-0
configure
configure
+46
-0
configure.ac
configure.ac
+14
-0
ip.c
dlls/nsiproxy.sys/ip.c
+75
-0
config.h.in
include/config.h.in
+6
-0
No files found.
configure
View file @
2264663c
...
...
@@ -8762,6 +8762,32 @@ then :
printf
"%s
\n
"
"#define HAVE_NETINET_UDP_H 1"
>>
confdefs.h
fi
ac_fn_c_check_header_compile
"
$LINENO
"
"netinet6/ip6_var.h"
"ac_cv_header_netinet6_ip6_var_h"
"#include <sys/types.h>
#include <sys/socket.h>
#ifdef HAVE_SYS_SOCKETVAR_H
# include <sys/socketvar.h>
#endif
#ifdef HAVE_NET_ROUTE_H
# include <net/route.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#ifdef HAVE_NETINET_IN_SYSTM_H
# include <netinet/in_systm.h>
#endif
#ifdef HAVE_NET_IF_H
# include <net/if.h>
#endif
#ifdef HAVE_NETINET_IP_H
# include <netinet/ip.h>
#endif
"
if
test
"x
$ac_cv_header_netinet6_ip6_var_h
"
=
xyes
then
:
printf
"%s
\n
"
"#define HAVE_NETINET6_IP6_VAR_H 1"
>>
confdefs.h
fi
ac_fn_c_check_header_compile
"
$LINENO
"
"netipx/ipx.h"
"ac_cv_header_netipx_ipx_h"
"#include <sys/types.h>
#include <sys/socket.h>
#ifdef HAVE_SYS_SOCKETVAR_H
...
...
@@ -20651,6 +20677,26 @@ printf "%s\n" "#define HAVE_STRUCT_IP_STATS_IPS_TOTAL 1" >>confdefs.h
fi
ac_fn_c_check_member
"
$LINENO
"
"struct ip6stat"
"ip6s_total"
"ac_cv_member_struct_ip6stat_ip6s_total"
"#include <sys/types.h>
#ifdef HAVE_SYS_SOCKETVAR_H
#include <sys/socketvar.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_NETINET6_IP6_VAR_H
#include <netinet6/ip6_var.h>
#endif
"
if
test
"x
$ac_cv_member_struct_ip6stat_ip6s_total
"
=
xyes
then
:
printf
"%s
\n
"
"#define HAVE_STRUCT_IP6STAT_IP6S_TOTAL 1"
>>
confdefs.h
fi
ac_fn_c_check_member
"
$LINENO
"
"struct icmpstat"
"icps_error"
"ac_cv_member_struct_icmpstat_icps_error"
"#include <sys/types.h>
#ifdef HAVE_SYS_SOCKETVAR_H
#include <sys/socketvar.h>
...
...
configure.ac
View file @
2264663c
...
...
@@ -532,6 +532,7 @@ AC_CHECK_HEADERS(\
netinet/ip_icmp.h \
netinet/ip_var.h \
netinet/udp.h \
netinet6/ip6_var.h \
netipx/ipx.h \
sys/un.h \
,,,[#include <sys/types.h>
...
...
@@ -2218,6 +2219,19 @@ AC_CHECK_MEMBERS([struct ip_stats.ips_total],,,
#include <netinet/ip_var.h>
#endif])
dnl Check for struct ip6stat
AC_CHECK_MEMBERS([struct ip6stat.ip6s_total],,,
[#include <sys/types.h>
#ifdef HAVE_SYS_SOCKETVAR_H
#include <sys/socketvar.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_NETINET6_IP6_VAR_H
#include <netinet6/ip6_var.h>
#endif])
dnl Check for struct icmpstat
AC_CHECK_MEMBERS([struct icmpstat.icps_error],,,
[#include <sys/types.h>
...
...
dlls/nsiproxy.sys/ip.c
View file @
2264663c
...
...
@@ -55,6 +55,50 @@
#include <netinet/ip_var.h>
#endif
#ifdef HAVE_NETINET6_IP6_VAR_H
#include <netinet6/ip6_var.h>
#endif
#ifdef __APPLE__
/* For reasons unknown, Mac OS doesn't export <netinet6/ip6_var.h> to user-
* space. We'll have to define the needed struct ourselves.
*/
struct
ip6stat
{
u_quad_t
ip6s_total
;
u_quad_t
ip6s_tooshort
;
u_quad_t
ip6s_toosmall
;
u_quad_t
ip6s_fragments
;
u_quad_t
ip6s_fragdropped
;
u_quad_t
ip6s_fragtimeout
;
u_quad_t
ip6s_fragoverflow
;
u_quad_t
ip6s_forward
;
u_quad_t
ip6s_cantforward
;
u_quad_t
ip6s_redirectsent
;
u_quad_t
ip6s_delivered
;
u_quad_t
ip6s_localout
;
u_quad_t
ip6s_odropped
;
u_quad_t
ip6s_reassembled
;
u_quad_t
ip6s_atmfrag_rcvd
;
u_quad_t
ip6s_fragmented
;
u_quad_t
ip6s_ofragments
;
u_quad_t
ip6s_cantfrag
;
u_quad_t
ip6s_badoptions
;
u_quad_t
ip6s_noroute
;
u_quad_t
ip6s_badvers
;
u_quad_t
ip6s_rawout
;
u_quad_t
ip6s_badscope
;
u_quad_t
ip6s_notmember
;
u_quad_t
ip6s_nxthist
[
256
];
u_quad_t
ip6s_m1
;
u_quad_t
ip6s_m2m
[
32
];
u_quad_t
ip6s_mext1
;
u_quad_t
ip6s_mext2m
;
u_quad_t
ip6s_exthdrtoolong
;
u_quad_t
ip6s_nogif
;
u_quad_t
ip6s_toomanyhdr
;
};
#endif
#ifdef HAVE_NETINET_ICMP_VAR_H
#include <netinet/icmp_var.h>
#endif
...
...
@@ -729,6 +773,37 @@ static NTSTATUS ipv6_ipstats_get_all_parameters( const void *key, UINT key_size,
if
(
static_data
)
*
(
struct
nsi_ip_ipstats_static
*
)
static_data
=
stat
;
return
status
;
}
#elif defined(HAVE_SYS_SYSCTL_H) && defined(IPV6CTL_STATS) && (defined(HAVE_STRUCT_IP6STAT_IP6S_TOTAL) || defined(__APPLE__))
{
int
mib
[]
=
{
CTL_NET
,
PF_INET6
,
IPPROTO_IPV6
,
IPV6CTL_STATS
};
struct
ip6stat
ip_stat
;
size_t
needed
;
needed
=
sizeof
(
ip_stat
);
if
(
sysctl
(
mib
,
ARRAY_SIZE
(
mib
),
&
ip_stat
,
&
needed
,
NULL
,
0
)
==
-
1
)
return
STATUS_NOT_SUPPORTED
;
dyn
.
in_recv
=
ip_stat
.
ip6s_total
;
dyn
.
in_hdr_errs
=
ip_stat
.
ip6s_tooshort
+
ip_stat
.
ip6s_toosmall
+
ip_stat
.
ip6s_badvers
+
ip_stat
.
ip6s_badoptions
+
ip_stat
.
ip6s_exthdrtoolong
+
ip_stat
.
ip6s_toomanyhdr
;
dyn
.
in_addr_errs
=
ip_stat
.
ip6s_cantforward
+
ip_stat
.
ip6s_badscope
+
ip_stat
.
ip6s_notmember
;
dyn
.
fwd_dgrams
=
ip_stat
.
ip6s_forward
;
dyn
.
in_discards
=
ip_stat
.
ip6s_fragdropped
;
dyn
.
in_delivers
=
ip_stat
.
ip6s_delivered
;
dyn
.
out_reqs
=
ip_stat
.
ip6s_localout
;
dyn
.
out_discards
=
ip_stat
.
ip6s_odropped
;
dyn
.
out_no_routes
=
ip_stat
.
ip6s_noroute
;
stat
.
reasm_timeout
=
ip_stat
.
ip6s_fragtimeout
;
dyn
.
reasm_reqds
=
ip_stat
.
ip6s_fragments
;
dyn
.
reasm_oks
=
ip_stat
.
ip6s_reassembled
;
dyn
.
reasm_fails
=
ip_stat
.
ip6s_fragments
-
ip_stat
.
ip6s_reassembled
;
dyn
.
frag_oks
=
ip_stat
.
ip6s_fragmented
;
dyn
.
frag_fails
=
ip_stat
.
ip6s_cantfrag
;
dyn
.
frag_creates
=
ip_stat
.
ip6s_ofragments
;
if
(
dynamic_data
)
*
(
struct
nsi_ip_ipstats_dynamic
*
)
dynamic_data
=
dyn
;
if
(
static_data
)
*
(
struct
nsi_ip_ipstats_static
*
)
static_data
=
stat
;
return
STATUS_SUCCESS
;
}
#else
FIXME
(
"not implemented
\n
"
);
return
STATUS_NOT_IMPLEMENTED
;
...
...
include/config.h.in
View file @
2264663c
...
...
@@ -257,6 +257,9 @@
/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
/* Define to 1 if you have the <netinet6/ip6_var.h> header file. */
#undef HAVE_NETINET6_IP6_VAR_H
/* Define to 1 if you have the <netinet/icmp6.h> header file. */
#undef HAVE_NETINET_ICMP6_H
...
...
@@ -458,6 +461,9 @@
/* Define to 1 if `ipi6_addr' is a member of `struct in6_pktinfo'. */
#undef HAVE_STRUCT_IN6_PKTINFO_IPI6_ADDR
/* Define to 1 if `ip6s_total' is a member of `struct ip6stat'. */
#undef HAVE_STRUCT_IP6STAT_IP6S_TOTAL
/* Define to 1 if `ips_total' is a member of `struct ipstat'. */
#undef HAVE_STRUCT_IPSTAT_IPS_TOTAL
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment