am 822c40a3
: Merge "<netinet/udp.h> should include <linux/udp.h>."
* commit '822c40a3389a953d9b43f05ad6e40640fd55f9c4': <netinet/udp.h> should include <linux/udp.h>.
This commit is contained in:
commit
d97f422405
@ -25,31 +25,29 @@
|
|||||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _NETINET_UDP_H
|
#ifndef _NETINET_UDP_H
|
||||||
#define _NETINET_UDP_H
|
#define _NETINET_UDP_H
|
||||||
|
|
||||||
/*
|
#include <sys/types.h>
|
||||||
* We would include linux/udp.h, but it brings in too much other stuff
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef __FAVOR_BSD
|
#include <linux/udp.h>
|
||||||
|
|
||||||
struct udphdr {
|
struct udphdr {
|
||||||
u_int16_t uh_sport; /* source port */
|
__extension__ union {
|
||||||
u_int16_t uh_dport; /* destination port */
|
struct /* BSD names */ {
|
||||||
u_int16_t uh_ulen; /* udp length */
|
u_int16_t uh_sport;
|
||||||
u_int16_t uh_sum; /* udp checksum */
|
u_int16_t uh_dport;
|
||||||
|
u_int16_t uh_ulen;
|
||||||
|
u_int16_t uh_sum;
|
||||||
|
};
|
||||||
|
struct /* Linux names */ {
|
||||||
|
u_int16_t source;
|
||||||
|
u_int16_t dest;
|
||||||
|
u_int16_t len;
|
||||||
|
u_int16_t check;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
struct udphdr {
|
|
||||||
__u16 source;
|
|
||||||
__u16 dest;
|
|
||||||
__u16 len;
|
|
||||||
__u16 check;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* __FAVOR_BSD */
|
|
||||||
|
|
||||||
#endif /* _NETINET_UDP_H */
|
#endif /* _NETINET_UDP_H */
|
||||||
|
@ -64,6 +64,8 @@ kernel_token_replacements = {
|
|||||||
# The kernel's SIGRTMIN/SIGRTMAX are absolute limits; userspace steals a few.
|
# The kernel's SIGRTMIN/SIGRTMAX are absolute limits; userspace steals a few.
|
||||||
"SIGRTMIN": "__SIGRTMIN",
|
"SIGRTMIN": "__SIGRTMIN",
|
||||||
"SIGRTMAX": "__SIGRTMAX",
|
"SIGRTMAX": "__SIGRTMAX",
|
||||||
|
# We want to support both BSD and Linux member names in struct udphdr.
|
||||||
|
"udphdr": "__kernel_udphdr",
|
||||||
}
|
}
|
||||||
|
|
||||||
# this is the set of known static inline functions that we want to keep
|
# this is the set of known static inline functions that we want to keep
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#ifndef _UAPI_LINUX_UDP_H
|
#ifndef _UAPI_LINUX_UDP_H
|
||||||
#define _UAPI_LINUX_UDP_H
|
#define _UAPI_LINUX_UDP_H
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
struct udphdr {
|
struct __kernel_udphdr {
|
||||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||||
__be16 source;
|
__be16 source;
|
||||||
__be16 dest;
|
__be16 dest;
|
||||||
|
@ -69,6 +69,7 @@ libBionicStandardTests_src_files := \
|
|||||||
math_test.cpp \
|
math_test.cpp \
|
||||||
mntent_test.cpp \
|
mntent_test.cpp \
|
||||||
netdb_test.cpp \
|
netdb_test.cpp \
|
||||||
|
netinet_udp_test.cpp \
|
||||||
pthread_test.cpp \
|
pthread_test.cpp \
|
||||||
pty_test.cpp \
|
pty_test.cpp \
|
||||||
regex_test.cpp \
|
regex_test.cpp \
|
||||||
|
46
tests/netinet_udp_test.cpp
Normal file
46
tests/netinet_udp_test.cpp
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <netinet/udp.h>
|
||||||
|
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#if defined(__BIONIC__)
|
||||||
|
#define UDPHDR_USES_ANON_UNION
|
||||||
|
#elif defined(__GLIBC_PREREQ)
|
||||||
|
#if __GLIBC_PREREQ(2, 18)
|
||||||
|
#define UDPHDR_USES_ANON_UNION
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
TEST(netinet_udp, compat) {
|
||||||
|
#if defined(UDPHDR_USES_ANON_UNION)
|
||||||
|
static_assert(offsetof(udphdr, uh_sport) == offsetof(udphdr, source), "udphdr::source");
|
||||||
|
static_assert(offsetof(udphdr, uh_dport) == offsetof(udphdr, dest), "udphdr::dest");
|
||||||
|
static_assert(offsetof(udphdr, uh_ulen) == offsetof(udphdr, len), "udphdr::len");
|
||||||
|
static_assert(offsetof(udphdr, uh_sum) == offsetof(udphdr, check), "udphdr::check");
|
||||||
|
|
||||||
|
udphdr u;
|
||||||
|
u.uh_sport = 0x1111;
|
||||||
|
u.uh_dport = 0x2222;
|
||||||
|
u.uh_ulen = 0x3333;
|
||||||
|
u.uh_sum = 0x4444;
|
||||||
|
ASSERT_EQ(0x1111, u.source);
|
||||||
|
ASSERT_EQ(0x2222, u.dest);
|
||||||
|
ASSERT_EQ(0x3333, u.len);
|
||||||
|
ASSERT_EQ(0x4444, u.check);
|
||||||
|
#endif
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user