]> git.ipfire.org Git - thirdparty/openvpn.git/commit
Fix unit test of test_pkt on little endian Linux
authorArne Schwabe <arne@rfc2549.org>
Wed, 7 Dec 2022 14:02:59 +0000 (15:02 +0100)
committerGert Doering <gert@greenie.muc.de>
Wed, 7 Dec 2022 18:14:07 +0000 (19:14 +0100)
commit0f904615bd2eac9d246055ff1ca4e4da95586f86
treefce833479fc0ed9778def96d91dd4f7bb1b68e0e
parentf5febf7f8998e425afb051cd6f965f4dd40b1659
Fix unit test of test_pkt on little endian Linux

This surprising breakage results from the fact that Linux basically uses
a different structure from the *BSD:

For exmaple, macOS has:

struct sockaddr_in {
    __uint8_t       sin_len;
    sa_family_t     sin_family;
    in_port_t       sin_port;
    struct  in_addr sin_addr;
    char            sin_zero[8];
};

with sa_family_t also uint8_t

and Linux has stupidly complex definition that boils down to:

struct sockaddr_in
  {
    uint16_t sin_family;
    in_port_t sin_port;
    struct in_addr sin_addr
    char sin_zero[8];
  };

So Linux basically has a 16 bit uint16 instead of two uint8_t. Because
s390x is big endian, this happens to be same in memory layout as on all
BSDs with first byte being 0 and second byte being the family.

Introduce a second array to check against, if we are on little endian
Linux.
This is a bit fragile but this is also just a unit test.

This also fixes compiling test_pkt with windows.

Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20221207140259.1083577-1-arne@rfc2549.org>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg25633.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
tests/unit_tests/openvpn/test_pkt.c