ofalk / libdnet

libdnet provides a simplified, portable interface to several low-level networking routines.
Other
153 stars 60 forks source link

1.14: libdnet is not LTO ready #63

Closed kloczek closed 11 months ago

kloczek commented 3 years ago

Summary stats about compile/link time warnings:

[tkloczko@barrel SPECS]$ rpmbuild -ba --with check libdnet.spec --quiet 2>&1 | grep -- -W | sed 's/.*\[//; s/\]//' | sort | uniq -c | sort -nr
     55 -Wunused-variable
     25 -Wparentheses
     22 -Wunused-label
     14 -Wpointer-sign
     13 -Wunused-function
     10 -Wincompatible-pointer-types
      3 -Wlto-type-mismatch
      2 -Wdeprecated-declarations
      1 -Wunused-result
      1 -Wimplicit-function-declaration

Mosts importand are those -Wlto-type-mismatch warnings because they are trashing LTO. Here is the full warnings log:

```console rand.c: In function 'rand_open': rand.c:84:17: warning: ignoring return value of 'read' declared with attribute 'warn_unused_result' [-Wunused-result] 84 | read(fd, seed + sizeof(*tv), sizeof(seed) - sizeof(*tv)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../include/config.h:298:5: warning: type of 'strlcpy' does not match original declaration [-Wlto-type-mismatch] 298 | int strlcpy(char *, const char *, int); | ^ strlcpy.c:43:1: note: return value type mismatch 43 | strlcpy(dst, src, siz) | ^ strlcpy.c:43:1: note: type 'size_t' should match type 'int' strlcpy.c:43:1: note: 'strlcpy' was previously declared here strlcpy.c:43:1: note: code may be misoptimized unless '-fno-strict-aliasing' is used ./dnet.c: In function ‘__pyx_f_4dnet_3eth_get’: ./dnet.c:583:49: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 583 | __pyx_2 = PyBytes_FromStringAndSize(__pyx_v_ea.data,6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} In file included from /usr/include/python3.8/Python.h:96, from ./dnet.c:5: /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3eth_set’: ./dnet.c:615:46: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 615 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_ea.data,__pyx_v_value,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3eth___dealloc__’: ./dnet.c:693:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 693 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_eth_ntoa’: ./dnet.c:711:46: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 711 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_ea.data,__pyx_v_buf,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_eth_aton’: ./dnet.c:763:49: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 763 | __pyx_3 = PyBytes_FromStringAndSize(__pyx_v_ea.data,6); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} In file included from /usr/include/python3.8/Python.h:96, from ./dnet.c:5: /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_eth_pack_hdr’: ./dnet.c:801:45: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 801 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_s.data,__pyx_v_src,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; goto __pyx_L1;} | ~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c:805:45: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 805 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_d.data,__pyx_v_dst,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; goto __pyx_L1;} | ~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_2ip___dealloc__’: ./dnet.c:918:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 918 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_ip_checksum’: ./dnet.c:1046:3: warning: ‘PyObject_AsReadBuffer’ is deprecated [-Wdeprecated-declarations] 1046 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_pkt,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ^~~~~~~ In file included from /usr/include/python3.8/Python.h:147, from ./dnet.c:5: /usr/include/python3.8/abstract.h:337:17: note: declared here 337 | PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, | ^~~~~~~~~~~~~~~~~~~~~ ./dnet.c:1046:49: warning: passing argument 2 of ‘PyObject_AsReadBuffer’ from incompatible pointer type [-Wincompatible-pointer-types] 1046 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_pkt,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ~^~~~~~~~~~~ | | | char ** In file included from /usr/include/python3.8/Python.h:147, from ./dnet.c:5: /usr/include/python3.8/abstract.h:338:52: note: expected ‘const void **’ but argument is of type ‘char **’ 338 | const void **buffer, | ~~~~~~~~~~~~~^~~~~~ ./dnet.c:1046:62: warning: passing argument 3 of ‘PyObject_AsReadBuffer’ from incompatible pointer type [-Wincompatible-pointer-types] 1046 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_pkt,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ~^~~~~~~~~~~ | | | int * In file included from /usr/include/python3.8/Python.h:147, from ./dnet.c:5: /usr/include/python3.8/abstract.h:339:51: note: expected ‘Py_ssize_t *’ {aka ‘long int *’} but argument is of type ‘int *’ 339 | Py_ssize_t *buffer_len); | ~~~~~~~~~~~~^~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_ip_cksum_add’: ./dnet.c:1127:3: warning: ‘PyObject_AsReadBuffer’ is deprecated [-Wdeprecated-declarations] 1127 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ^~~~~~~ In file included from /usr/include/python3.8/Python.h:147, from ./dnet.c:5: /usr/include/python3.8/abstract.h:337:17: note: declared here 337 | PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, | ^~~~~~~~~~~~~~~~~~~~~ ./dnet.c:1127:49: warning: passing argument 2 of ‘PyObject_AsReadBuffer’ from incompatible pointer type [-Wincompatible-pointer-types] 1127 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ~^~~~~~~~~~~ | | | char ** In file included from /usr/include/python3.8/Python.h:147, from ./dnet.c:5: /usr/include/python3.8/abstract.h:338:52: note: expected ‘const void **’ but argument is of type ‘char **’ 338 | const void **buffer, | ~~~~~~~~~~~~~^~~~~~ ./dnet.c:1127:62: warning: passing argument 3 of ‘PyObject_AsReadBuffer’ from incompatible pointer type [-Wincompatible-pointer-types] 1127 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ~^~~~~~~~~~~ | | | int * In file included from /usr/include/python3.8/Python.h:147, from ./dnet.c:5: /usr/include/python3.8/abstract.h:339:51: note: expected ‘Py_ssize_t *’ {aka ‘long int *’} but argument is of type ‘int *’ 339 | Py_ssize_t *buffer_len); | ~~~~~~~~~~~~^~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr___init__’: ./dnet.c:1473:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1473 | if (__pyx_1=PyObject_RichCompareBool(__pyx_v_addrtxt, Py_None, Py_EQ) == 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_4data___get__’: ./dnet.c:1661:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1661 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:1676:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1676 | if (__pyx_3=PyObject_RichCompareBool(__pyx_2, __pyx_1, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:1691:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1691 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_3eth___get__’: ./dnet.c:1741:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1741 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2,Py_EQ ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; goto __pyx_L1;} | ^~~~~~~ In file included from ../include/dnet.h:17, from ./dnet.c:24: ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1757:92: note: in expansion of macro ‘addr_data8’ 1757 | __pyx_2 = PyBytes_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; goto __pyx_L1;} | ^~~~~~~~~~ In file included from /usr/include/python3.8/Python.h:96, from ./dnet.c:5: /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_3eth___set__’: ./dnet.c:1791:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1791 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2,Py_EQ ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; goto __pyx_L1;} | ^~~~~~~ In file included from ../include/dnet.h:17, from ./dnet.c:24: ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1807:89: note: in expansion of macro ‘addr_data8’ 1807 | __pyx_2 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; goto __pyx_L1;} | ^~~~~~~~~~ ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_2ip___get__’: ./dnet.c:1850:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1850 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; goto __pyx_L1;} | ^~~~~~~ In file included from ../include/dnet.h:17, from ./dnet.c:24: ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1866:92: note: in expansion of macro ‘addr_data8’ 1866 | __pyx_2 = PyBytes_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; goto __pyx_L1;} | ^~~~~~~~~~ In file included from /usr/include/python3.8/Python.h:96, from ./dnet.c:5: /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_2ip___set__’: ./dnet.c:1914:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1914 | if (__pyx_1 = PyObject_RichCompareBool(__pyx_2, __pyx_3, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; goto __pyx_L1;} | ^~~~~~~ In file included from ../include/dnet.h:17, from ./dnet.c:24: ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1930:91: note: in expansion of macro ‘addr_data8’ 1930 | __pyx_3 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; goto __pyx_L1;} | ^~~~~~~~~~ ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_3ip6___get__’: ./dnet.c:1975:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1975 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; goto __pyx_L1;} | ^~~~~~~ In file included from ../include/dnet.h:17, from ./dnet.c:24: ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1991:92: note: in expansion of macro ‘addr_data8’ 1991 | __pyx_2 = PyBytes_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,16); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; goto __pyx_L1;} | ^~~~~~~~~~ In file included from /usr/include/python3.8/Python.h:96, from ./dnet.c:5: /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_3ip6___set__’: ./dnet.c:2025:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2025 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; goto __pyx_L1;} | ^~~~~~~ In file included from ../include/dnet.h:17, from ./dnet.c:24: ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:2041:89: note: in expansion of macro ‘addr_data8’ 2041 | __pyx_2 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,16); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; goto __pyx_L1;} | ^~~~~~~~~~ ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr___hash__’: ./dnet.c:2412:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2412 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:2422:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2422 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 579; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:2432:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2432 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:2466:3: warning: label ‘__pyx_L4’ defined but not used [-Wunused-label] 2466 | __pyx_L4:; | ^~~~~~~~ ./dnet.c:2464:5: warning: label ‘__pyx_L3’ defined but not used [-Wunused-label] 2464 | __pyx_L3:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr___int__’: ./dnet.c:2518:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2518 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr___iter__’: ./dnet.c:2598:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2598 | if (__pyx_1 = PyObject_RichCompareBool(__pyx_2, __pyx_3,Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3arp_loop’: ./dnet.c:3120:88: warning: passing argument 2 of ‘arp_loop’ from incompatible pointer type [-Wincompatible-pointer-types] 3120 | __pyx_1 = PyLong_FromLong(arp_loop(((struct __pyx_obj_4dnet_arp *)__pyx_v_self)->arp,__pyx_f_4dnet___arp_callback,((void (*))__pyx_v__arg))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; goto __pyx_L1;} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int (*)(struct arp_entry *, void *) In file included from ../include/dnet.h:18, from ./dnet.c:24: ../include/dnet/arp.h:101:43: note: expected ‘arp_handler’ {aka ‘int (*)(const struct arp_entry *, void *)’} but argument is of type ‘int (*)(struct arp_entry *, void *)’ 101 | int arp_loop(arp_t *arp, arp_handler callback, void *arg); | ~~~~~~~~~~~~^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3arp___dealloc__’: ./dnet.c:3213:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 3213 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_arp_pack_hdr_ethip’: ./dnet.c:3249:46: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 3249 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_sh.data,__pyx_v_sha,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c:3253:46: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 3253 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_dh.data,__pyx_v_dha,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:400:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 400 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_ifent_to_dict’: ./dnet.c:3494:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 3494 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:3516:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 3516 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_2, __pyx_1, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:3538:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 3538 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:3593:5: warning: label ‘__pyx_L7’ defined but not used [-Wunused-label] 3593 | __pyx_L7:; | ^~~~~~~~ ./dnet.c:3591:7: warning: label ‘__pyx_L6’ defined but not used [-Wunused-label] 3591 | __pyx_L6:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_dict_to_ifent’: ./dnet.c:3649:3: warning: implicit declaration of function ‘strlcpy’; did you mean ‘strncpy’? [-Wimplicit-function-declaration] 3649 | strlcpy(__pyx_v_entry->intf_name,__pyx_2,16); | ^~~~~~~ | strncpy ./dnet.c:3747:5: warning: label ‘__pyx_L9’ defined but not used [-Wunused-label] 3747 | __pyx_L9:; | ^~~~~~~~ ./dnet.c:3745:7: warning: label ‘__pyx_L8’ defined but not used [-Wunused-label] 3745 | __pyx_L8:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4intf_loop’: ./dnet.c:4137:91: warning: passing argument 2 of ‘intf_loop’ from incompatible pointer type [-Wincompatible-pointer-types] 4137 | __pyx_1 = PyLong_FromLong(intf_loop(((struct __pyx_obj_4dnet_intf *)__pyx_v_self)->intf,__pyx_f_4dnet___intf_callback,((void (*))__pyx_v__arg))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; goto __pyx_L1;} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int (*)(struct intf_entry *, void *) In file included from ../include/dnet.h:24, from ./dnet.c:24: ../include/dnet/intf.h:64:44: note: expected ‘intf_handler’ {aka ‘int (*)(const struct intf_entry *, void *)’} but argument is of type ‘int (*)(struct intf_entry *, void *)’ 64 | int intf_loop(intf_t *i, intf_handler callback, void *arg); | ~~~~~~~~~~~~~^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4intf___dealloc__’: ./dnet.c:4227:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 4227 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_5route_loop’: ./dnet.c:4558:94: warning: passing argument 2 of ‘route_loop’ from incompatible pointer type [-Wincompatible-pointer-types] 4558 | __pyx_1 = PyLong_FromLong(route_loop(((struct __pyx_obj_4dnet_route *)__pyx_v_self)->route,__pyx_f_4dnet___route_callback,((void (*))__pyx_v__arg))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; goto __pyx_L1;} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int (*)(struct route_entry *, void *) In file included from ../include/dnet.h:25, from ./dnet.c:24: ../include/dnet/route.h:31:47: note: expected ‘route_handler’ {aka ‘int (*)(const struct route_entry *, void *)’} but argument is of type ‘int (*)(struct route_entry *, void *)’ 31 | int route_loop(route_t *r, route_handler callback, void *arg); | ~~~~~~~~~~~~~~^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_5route___dealloc__’: ./dnet.c:4648:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 4648 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_rule_to_dict’: ./dnet.c:4710:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 4710 | if (__pyx_2 = PyObject_RichCompareBool(__pyx_1, __pyx_3, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:4732:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 4732 | if (__pyx_2 = PyObject_RichCompareBool(__pyx_3, __pyx_1, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1198; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_dict_to_rule’: ./dnet.c:4860:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 4860 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_4, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:4867:11: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 4867 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_4, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_2fw_loop’: ./dnet.c:5218:85: warning: passing argument 2 of ‘fw_loop’ from incompatible pointer type [-Wincompatible-pointer-types] 5218 | __pyx_1 = PyLong_FromLong(fw_loop(((struct __pyx_obj_4dnet_fw *)__pyx_v_self)->fw,__pyx_f_4dnet___fw_callback,((void (*))__pyx_v__arg))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; goto __pyx_L1;} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int (*)(struct fw_rule *, void *) In file included from ../include/dnet.h:26, from ./dnet.c:24: ../include/dnet/fw.h:50:38: note: expected ‘fw_handler’ {aka ‘int (*)(const struct fw_rule *, void *)’} but argument is of type ‘int (*)(struct fw_rule *, void *)’ 50 | int fw_loop(fw_t *f, fw_handler callback, void *arg); | ~~~~~~~~~~~^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_2fw___dealloc__’: ./dnet.c:5308:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 5308 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4rand_get’: ./dnet.c:5372:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 5372 | if (__pyx_2 = PyObject_RichCompareBool(__pyx_v_len, __pyx_1, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4rand_xrange’: ./dnet.c:5574:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 5574 | if (__pyx_1 = PyObject_RichCompareBool(__pyx_v_stop, Py_None, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4rand___dealloc__’: ./dnet.c:5642:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 5642 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_13__rand_xrange___init__’: ./dnet.c:5738:3: warning: label ‘__pyx_L5’ defined but not used [-Wunused-label] 5738 | __pyx_L5:; | ^~~~~~~~ ./dnet.c:5731:5: warning: label ‘__pyx_L4’ defined but not used [-Wunused-label] 5731 | __pyx_L4:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_13__rand_xrange___iter__’: ./dnet.c:5800:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 5800 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_13__rand_xrange___len__’: ./dnet.c:5819:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 5819 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_13__rand_xrange___next__’: ./dnet.c:5892:5: warning: label ‘__pyx_L6’ defined but not used [-Wunused-label] 5892 | __pyx_L6:; | ^~~~~~~~ ./dnet.c:5890:7: warning: label ‘__pyx_L5’ defined but not used [-Wunused-label] 5890 | __pyx_L5:; | ^~~~~~~~ ./dnet.c:5856:5: warning: label ‘__pyx_L3’ defined but not used [-Wunused-label] 5856 | __pyx_L3:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3tun_close’: ./dnet.c:6148:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 6148 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3tun___dealloc__’: ./dnet.c:6182:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 6182 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_tp_new_4dnet_eth’: ./dnet.c:6404:31: warning: unused variable ‘p’ [-Wunused-variable] 6404 | struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_eth’: ./dnet.c:6409:31: warning: unused variable ‘p’ [-Wunused-variable] 6409 | struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_eth’: ./dnet.c:6424:31: warning: unused variable ‘p’ [-Wunused-variable] 6424 | struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o; | ^ ./dnet.c:6423:7: warning: unused variable ‘e’ [-Wunused-variable] 6423 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_eth’: ./dnet.c:6429:31: warning: unused variable ‘p’ [-Wunused-variable] 6429 | struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o; | ^ ./dnet.c: At top level: ./dnet.c:6477:3: warning: excess elements in struct initializer 6477 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:6477:3: note: (near initialization for ‘__pyx_tp_as_number_eth’) ./dnet.c:6478:3: warning: excess elements in struct initializer 6478 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:6478:3: note: (near initialization for ‘__pyx_tp_as_number_eth’) ./dnet.c:6503:3: warning: excess elements in struct initializer 6503 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:6503:3: note: (near initialization for ‘__pyx_tp_as_buffer_eth’) ./dnet.c:6504:3: warning: excess elements in struct initializer 6504 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:6504:3: note: (near initialization for ‘__pyx_tp_as_buffer_eth’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_ip’: ./dnet.c:6557:30: warning: unused variable ‘p’ [-Wunused-variable] 6557 | struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_ip’: ./dnet.c:6562:30: warning: unused variable ‘p’ [-Wunused-variable] 6562 | struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_ip’: ./dnet.c:6577:30: warning: unused variable ‘p’ [-Wunused-variable] 6577 | struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o; | ^ ./dnet.c:6576:7: warning: unused variable ‘e’ [-Wunused-variable] 6576 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_ip’: ./dnet.c:6582:30: warning: unused variable ‘p’ [-Wunused-variable] 6582 | struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o; | ^ ./dnet.c: At top level: ./dnet.c:6628:3: warning: excess elements in struct initializer 6628 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:6628:3: note: (near initialization for ‘__pyx_tp_as_number_ip’) ./dnet.c:6629:3: warning: excess elements in struct initializer 6629 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:6629:3: note: (near initialization for ‘__pyx_tp_as_number_ip’) ./dnet.c:6654:3: warning: excess elements in struct initializer 6654 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:6654:3: note: (near initialization for ‘__pyx_tp_as_buffer_ip’) ./dnet.c:6655:3: warning: excess elements in struct initializer 6655 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:6655:3: note: (near initialization for ‘__pyx_tp_as_buffer_ip’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_addr’: ./dnet.c:6708:32: warning: unused variable ‘p’ [-Wunused-variable] 6708 | struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_addr’: ./dnet.c:6713:32: warning: unused variable ‘p’ [-Wunused-variable] 6713 | struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_addr’: ./dnet.c:6719:32: warning: unused variable ‘p’ [-Wunused-variable] 6719 | struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o; | ^ ./dnet.c:6718:7: warning: unused variable ‘e’ [-Wunused-variable] 6718 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_addr’: ./dnet.c:6724:32: warning: unused variable ‘p’ [-Wunused-variable] 6724 | struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o; | ^ ./dnet.c: At top level: ./dnet.c:6839:3: warning: initialization of ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} from incompatible pointer type ‘PyObject * (*)(PyObject *)’ {aka ‘struct _object * (*)(struct _object *)’} [-Wincompatible-pointer-types] 6839 | __pyx_f_4dnet_4addr___long__, /*nb_long*/ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./dnet.c:6839:3: note: (near initialization for ‘__pyx_tp_as_number_addr.nb_inplace_add’) ./dnet.c:6856:3: warning: excess elements in struct initializer 6856 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:6856:3: note: (near initialization for ‘__pyx_tp_as_number_addr’) ./dnet.c:6857:3: warning: excess elements in struct initializer 6857 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:6857:3: note: (near initialization for ‘__pyx_tp_as_number_addr’) ./dnet.c:6882:3: warning: excess elements in struct initializer 6882 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:6882:3: note: (near initialization for ‘__pyx_tp_as_buffer_addr’) ./dnet.c:6883:3: warning: excess elements in struct initializer 6883 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:6883:3: note: (near initialization for ‘__pyx_tp_as_buffer_addr’) ./dnet.c:6895:3: warning: initialization of ‘PyAsyncMethods *’ from incompatible pointer type ‘int (*)(PyObject *, PyObject *)’ {aka ‘int (*)(struct _object *, struct _object *)’} [-Wincompatible-pointer-types] 6895 | __pyx_f_4dnet_4addr___cmp__, /*tp_compare*/ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ./dnet.c:6895:3: note: (near initialization for ‘__pyx_type_4dnet_addr.tp_as_async’) ./dnet.c: In function ‘__pyx_tp_new_4dnet___addr_ip4_iter’: ./dnet.c:6936:43: warning: unused variable ‘p’ [-Wunused-variable] 6936 | struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet___addr_ip4_iter’: ./dnet.c:6941:43: warning: unused variable ‘p’ [-Wunused-variable] 6941 | struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet___addr_ip4_iter’: ./dnet.c:6947:43: warning: unused variable ‘p’ [-Wunused-variable] 6947 | struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o; | ^ ./dnet.c:6946:7: warning: unused variable ‘e’ [-Wunused-variable] 6946 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet___addr_ip4_iter’: ./dnet.c:6952:43: warning: unused variable ‘p’ [-Wunused-variable] 6952 | struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o; | ^ ./dnet.c: At top level: ./dnet.c:6997:3: warning: excess elements in struct initializer 6997 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:6997:3: note: (near initialization for ‘__pyx_tp_as_number___addr_ip4_iter’) ./dnet.c:6998:3: warning: excess elements in struct initializer 6998 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:6998:3: note: (near initialization for ‘__pyx_tp_as_number___addr_ip4_iter’) ./dnet.c:7023:3: warning: excess elements in struct initializer 7023 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7023:3: note: (near initialization for ‘__pyx_tp_as_buffer___addr_ip4_iter’) ./dnet.c:7024:3: warning: excess elements in struct initializer 7024 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7024:3: note: (near initialization for ‘__pyx_tp_as_buffer___addr_ip4_iter’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_arp’: ./dnet.c:7077:31: warning: unused variable ‘p’ [-Wunused-variable] 7077 | struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_arp’: ./dnet.c:7082:31: warning: unused variable ‘p’ [-Wunused-variable] 7082 | struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_arp’: ./dnet.c:7097:31: warning: unused variable ‘p’ [-Wunused-variable] 7097 | struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o; | ^ ./dnet.c:7096:7: warning: unused variable ‘e’ [-Wunused-variable] 7096 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_arp’: ./dnet.c:7102:31: warning: unused variable ‘p’ [-Wunused-variable] 7102 | struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o; | ^ ./dnet.c: At top level: ./dnet.c:7151:3: warning: excess elements in struct initializer 7151 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7151:3: note: (near initialization for ‘__pyx_tp_as_number_arp’) ./dnet.c:7152:3: warning: excess elements in struct initializer 7152 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7152:3: note: (near initialization for ‘__pyx_tp_as_number_arp’) ./dnet.c:7177:3: warning: excess elements in struct initializer 7177 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7177:3: note: (near initialization for ‘__pyx_tp_as_buffer_arp’) ./dnet.c:7178:3: warning: excess elements in struct initializer 7178 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7178:3: note: (near initialization for ‘__pyx_tp_as_buffer_arp’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_intf’: ./dnet.c:7231:32: warning: unused variable ‘p’ [-Wunused-variable] 7231 | struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_intf’: ./dnet.c:7236:32: warning: unused variable ‘p’ [-Wunused-variable] 7236 | struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_intf’: ./dnet.c:7251:32: warning: unused variable ‘p’ [-Wunused-variable] 7251 | struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o; | ^ ./dnet.c:7250:7: warning: unused variable ‘e’ [-Wunused-variable] 7250 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_intf’: ./dnet.c:7256:32: warning: unused variable ‘p’ [-Wunused-variable] 7256 | struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o; | ^ ./dnet.c: At top level: ./dnet.c:7306:3: warning: excess elements in struct initializer 7306 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7306:3: note: (near initialization for ‘__pyx_tp_as_number_intf’) ./dnet.c:7307:3: warning: excess elements in struct initializer 7307 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7307:3: note: (near initialization for ‘__pyx_tp_as_number_intf’) ./dnet.c:7332:3: warning: excess elements in struct initializer 7332 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7332:3: note: (near initialization for ‘__pyx_tp_as_buffer_intf’) ./dnet.c:7333:3: warning: excess elements in struct initializer 7333 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7333:3: note: (near initialization for ‘__pyx_tp_as_buffer_intf’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_route’: ./dnet.c:7386:33: warning: unused variable ‘p’ [-Wunused-variable] 7386 | struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_route’: ./dnet.c:7391:33: warning: unused variable ‘p’ [-Wunused-variable] 7391 | struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_route’: ./dnet.c:7406:33: warning: unused variable ‘p’ [-Wunused-variable] 7406 | struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o; | ^ ./dnet.c:7405:7: warning: unused variable ‘e’ [-Wunused-variable] 7405 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_route’: ./dnet.c:7411:33: warning: unused variable ‘p’ [-Wunused-variable] 7411 | struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o; | ^ ./dnet.c: At top level: ./dnet.c:7460:3: warning: excess elements in struct initializer 7460 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7460:3: note: (near initialization for ‘__pyx_tp_as_number_route’) ./dnet.c:7461:3: warning: excess elements in struct initializer 7461 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7461:3: note: (near initialization for ‘__pyx_tp_as_number_route’) ./dnet.c:7486:3: warning: excess elements in struct initializer 7486 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7486:3: note: (near initialization for ‘__pyx_tp_as_buffer_route’) ./dnet.c:7487:3: warning: excess elements in struct initializer 7487 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7487:3: note: (near initialization for ‘__pyx_tp_as_buffer_route’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_fw’: ./dnet.c:7540:30: warning: unused variable ‘p’ [-Wunused-variable] 7540 | struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_fw’: ./dnet.c:7545:30: warning: unused variable ‘p’ [-Wunused-variable] 7545 | struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_fw’: ./dnet.c:7560:30: warning: unused variable ‘p’ [-Wunused-variable] 7560 | struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o; | ^ ./dnet.c:7559:7: warning: unused variable ‘e’ [-Wunused-variable] 7559 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_fw’: ./dnet.c:7565:30: warning: unused variable ‘p’ [-Wunused-variable] 7565 | struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o; | ^ ./dnet.c: At top level: ./dnet.c:7613:3: warning: excess elements in struct initializer 7613 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7613:3: note: (near initialization for ‘__pyx_tp_as_number_fw’) ./dnet.c:7614:3: warning: excess elements in struct initializer 7614 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7614:3: note: (near initialization for ‘__pyx_tp_as_number_fw’) ./dnet.c:7639:3: warning: excess elements in struct initializer 7639 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7639:3: note: (near initialization for ‘__pyx_tp_as_buffer_fw’) ./dnet.c:7640:3: warning: excess elements in struct initializer 7640 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7640:3: note: (near initialization for ‘__pyx_tp_as_buffer_fw’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_rand’: ./dnet.c:7693:32: warning: unused variable ‘p’ [-Wunused-variable] 7693 | struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_rand’: ./dnet.c:7698:32: warning: unused variable ‘p’ [-Wunused-variable] 7698 | struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_rand’: ./dnet.c:7713:32: warning: unused variable ‘p’ [-Wunused-variable] 7713 | struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o; | ^ ./dnet.c:7712:7: warning: unused variable ‘e’ [-Wunused-variable] 7712 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_rand’: ./dnet.c:7718:32: warning: unused variable ‘p’ [-Wunused-variable] 7718 | struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o; | ^ ./dnet.c: At top level: ./dnet.c:7770:3: warning: excess elements in struct initializer 7770 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7770:3: note: (near initialization for ‘__pyx_tp_as_number_rand’) ./dnet.c:7771:3: warning: excess elements in struct initializer 7771 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7771:3: note: (near initialization for ‘__pyx_tp_as_number_rand’) ./dnet.c:7796:3: warning: excess elements in struct initializer 7796 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7796:3: note: (near initialization for ‘__pyx_tp_as_buffer_rand’) ./dnet.c:7797:3: warning: excess elements in struct initializer 7797 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7797:3: note: (near initialization for ‘__pyx_tp_as_buffer_rand’) ./dnet.c: In function ‘__pyx_tp_new_4dnet___rand_xrange’: ./dnet.c:7850:41: warning: unused variable ‘p’ [-Wunused-variable] 7850 | struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet___rand_xrange’: ./dnet.c:7855:41: warning: unused variable ‘p’ [-Wunused-variable] 7855 | struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet___rand_xrange’: ./dnet.c:7861:41: warning: unused variable ‘p’ [-Wunused-variable] 7861 | struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o; | ^ ./dnet.c:7860:7: warning: unused variable ‘e’ [-Wunused-variable] 7860 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet___rand_xrange’: ./dnet.c:7866:41: warning: unused variable ‘p’ [-Wunused-variable] 7866 | struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o; | ^ ./dnet.c: At top level: ./dnet.c:7911:3: warning: excess elements in struct initializer 7911 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7911:3: note: (near initialization for ‘__pyx_tp_as_number___rand_xrange’) ./dnet.c:7912:3: warning: excess elements in struct initializer 7912 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7912:3: note: (near initialization for ‘__pyx_tp_as_number___rand_xrange’) ./dnet.c:7937:3: warning: excess elements in struct initializer 7937 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7937:3: note: (near initialization for ‘__pyx_tp_as_buffer___rand_xrange’) ./dnet.c:7938:3: warning: excess elements in struct initializer 7938 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7938:3: note: (near initialization for ‘__pyx_tp_as_buffer___rand_xrange’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_tun’: ./dnet.c:7991:31: warning: unused variable ‘p’ [-Wunused-variable] 7991 | struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_tun’: ./dnet.c:7996:31: warning: unused variable ‘p’ [-Wunused-variable] 7996 | struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_tun’: ./dnet.c:8011:31: warning: unused variable ‘p’ [-Wunused-variable] 8011 | struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o; | ^ ./dnet.c:8010:7: warning: unused variable ‘e’ [-Wunused-variable] 8010 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_tun’: ./dnet.c:8016:31: warning: unused variable ‘p’ [-Wunused-variable] 8016 | struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o; | ^ ./dnet.c: At top level: ./dnet.c:8079:3: warning: excess elements in struct initializer 8079 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:8079:3: note: (near initialization for ‘__pyx_tp_as_number_tun’) ./dnet.c:8080:3: warning: excess elements in struct initializer 8080 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:8080:3: note: (near initialization for ‘__pyx_tp_as_number_tun’) ./dnet.c:8105:3: warning: excess elements in struct initializer 8105 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:8105:3: note: (near initialization for ‘__pyx_tp_as_buffer_tun’) ./dnet.c:8106:3: warning: excess elements in struct initializer 8106 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:8106:3: note: (near initialization for ‘__pyx_tp_as_buffer_tun’) ./dnet.c: In function ‘__Pyx_EndUnpack’: ./dnet.c:9275:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 9275 | if (item = PySequence_GetItem(seq, i)) { | ^~~~ ./dnet.c: At top level: ./dnet.c:32:12: warning: ‘__Pyx_PrintItem’ declared ‘static’ but never defined [-Wunused-function] 32 | static int __Pyx_PrintItem(PyObject *); /*proto*/ | ^~~~~~~~~~~~~~~ ./dnet.c:33:12: warning: ‘__Pyx_PrintNewline’ declared ‘static’ but never defined [-Wunused-function] 33 | static int __Pyx_PrintNewline(void); /*proto*/ | ^~~~~~~~~~~~~~~~~~ ./dnet.c:35:13: warning: ‘__Pyx_ReRaise’ declared ‘static’ but never defined [-Wunused-function] 35 | static void __Pyx_ReRaise(void); /*proto*/ | ^~~~~~~~~~~~~ ./dnet.c:36:18: warning: ‘__Pyx_Import’ declared ‘static’ but never defined [-Wunused-function] 36 | static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/ | ^~~~~~~~~~~~ ./dnet.c:37:18: warning: ‘__Pyx_GetExcValue’ declared ‘static’ but never defined [-Wunused-function] 37 | static PyObject *__Pyx_GetExcValue(void); /*proto*/ | ^~~~~~~~~~~~~~~~~ ./dnet.c:40:12: warning: ‘__Pyx_GetStarArgs’ declared ‘static’ but never defined [-Wunused-function] 40 | static int __Pyx_GetStarArgs(PyObject **args, PyObject **kwds, char *kwd_list[], Py_ssize_t nargs, PyObject **args2, PyObject **kwds2); /*proto*/ | ^~~~~~~~~~~~~~~~~ ./dnet.c:41:13: warning: ‘__Pyx_WriteUnraisable’ declared ‘static’ but never defined [-Wunused-function] 41 | static void __Pyx_WriteUnraisable(char *name); /*proto*/ | ^~~~~~~~~~~~~~~~~~~~~ ./dnet.c:43:22: warning: ‘__Pyx_ImportType’ declared ‘static’ but never defined [-Wunused-function] 43 | static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size); /*proto*/ | ^~~~~~~~~~~~~~~~ ./dnet.c:44:12: warning: ‘__Pyx_SetVtable’ declared ‘static’ but never defined [-Wunused-function] 44 | static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ | ^~~~~~~~~~~~~~~ ./dnet.c:45:12: warning: ‘__Pyx_GetVtable’ declared ‘static’ but never defined [-Wunused-function] 45 | static int __Pyx_GetVtable(PyObject *dict, void *vtabptr); /*proto*/ | ^~~~~~~~~~~~~~~ ./dnet.c:46:18: warning: ‘__Pyx_CreateClass’ declared ‘static’ but never defined [-Wunused-function] 46 | static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, char *modname); /*proto*/ | ^~~~~~~~~~~~~~~~~ ./dnet.c:49:12: warning: ‘__Pyx_InitCApi’ declared ‘static’ but never defined [-Wunused-function] 49 | static int __Pyx_InitCApi(PyObject *module); /*proto*/ | ^~~~~~~~~~~~~~ ./dnet.c:50:12: warning: ‘__Pyx_ImportModuleCApi’ declared ‘static’ but never defined [-Wunused-function] 50 | static int __Pyx_ImportModuleCApi(__Pyx_CApiTabEntry *t); /*proto*/ | ^~~~~~~~~~~~~~~~~~~~~~ ./dnet.c:3649:3: warning: type of ‘strlcpy’ does not match original declaration [-Wlto-type-mismatch] 3649 | strlcpy(__pyx_v_entry->intf_name,__pyx_2,16); | ^ ../src/strlcpy.c:43:1: note: return value type mismatch 43 | strlcpy(dst, src, siz) | ^ ../src/strlcpy.c:43:1: note: type ‘size_t’ should match type ‘int’ ../src/../include/config.h:298:5: warning: type of ‘strlcpy’ does not match original declaration [-Wlto-type-mismatch] 298 | int strlcpy(char *, const char *, int); | ^ ../src/strlcpy.c:43:1: note: return value type mismatch 43 | strlcpy(dst, src, siz) | ^ ../src/strlcpy.c:43:1: note: type ‘size_t’ should match type ‘int’ ../src/strlcpy.c:43:1: note: ‘strlcpy’ was previously declared here ../src/strlcpy.c:43:1: note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used ```
kloczek commented 2 years ago

gentle pin 😄

ofalk commented 2 years ago

Please have a look at the new branch, where I tried removing the local versions of strl* and strsep: https://github.com/ofalk/libdnet/commit/58d3a7915104bb1d6605c8ddc484fc5951546ca9

ofalk commented 2 years ago

Thanks for the ping @kloczek !

kloczek commented 2 years ago

Cannot apply that commit on top of master. Do you have maybe some plans to make the new release soon? 🤔

If you are thinking that issue is resolved feel free to close it. I'll retest it on next release. Thx 😃

ofalk commented 2 years ago

New release has been created: 1.16 (yes, 1.15 skipped)

Note: Python bindings are currently not really working fine, but that's another story.

kloczek commented 2 years ago

There are sill some LTO related warnings. Updated stats for 1.16

```console 90 -Wformat-extra-args 20 -Wpointer-sign 2 -Wunused-variable 2 -Wsizeof-pointer-memaccess 1 -Wunused-result 1 -Wstringop-overread 1 -Wlto-type-mismatch ``` autoreconf from autoconf 2.71 shows as well some arnings. At the end of the log is as well `-fno-strict-aliasing` warning. All warnings: ```console autoreconf: export WARNINGS= autoreconf: Entering directory '.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force autoreconf: configure.ac: tracing autoreconf: running: libtoolize --copy --force autoreconf: configure.ac: not using Intltool autoreconf: configure.ac: not using Gtkdoc autoreconf: running: aclocal --force autoreconf: running: /usr/bin/autoconf --force configure.ac:41: warning: The macro `AC_LIBTOOL_DLOPEN' is obsolete. configure.ac:41: You should run autoupdate. m4/ltoptions.m4:113: AC_LIBTOOL_DLOPEN is expanded from... configure.ac:41: the top level configure.ac:41: warning: AC_LIBTOOL_DLOPEN: Remove this warning and the call to _LT_SET_OPTION when you configure.ac:41: put the 'dlopen' option into LT_INIT's first parameter. ./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from... m4/ltoptions.m4:113: AC_LIBTOOL_DLOPEN is expanded from... configure.ac:41: the top level configure.ac:42: warning: The macro `AM_PROG_LIBTOOL' is obsolete. configure.ac:42: You should run autoupdate. m4/libtool.m4:101: AM_PROG_LIBTOOL is expanded from... configure.ac:42: the top level configure.ac:47: warning: The macro `AC_ERROR' is obsolete. configure.ac:47: You should run autoupdate. ./lib/autoconf/oldnames.m4:34: AC_ERROR is expanded from... lib/m4sugar/m4sh.m4:699: AS_IF is expanded from... ./lib/autoconf/general.m4:1553: AC_ARG_WITH is expanded from... configure.ac:47: the top level configure.ac:131: warning: The macro `AC_ERROR' is obsolete. configure.ac:131: You should run autoupdate. ./lib/autoconf/oldnames.m4:34: AC_ERROR is expanded from... lib/m4sugar/m4sh.m4:699: AS_IF is expanded from... ./lib/autoconf/general.m4:1553: AC_ARG_WITH is expanded from... configure.ac:131: the top level configure.ac:168: warning: The macro `AC_HEADER_STDC' is obsolete. configure.ac:168: You should run autoupdate. ./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from... configure.ac:168: the top level configure.ac:191: warning: The macro `AC_TRY_COMPILE' is obsolete. configure.ac:191: You should run autoupdate. ./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from... m4/acinclude.m4:30: AC_DNET_SOCKADDR_IN6 is expanded from... configure.ac:191: the top level configure.ac:193: warning: The macro `AC_TRY_COMPILE' is obsolete. configure.ac:193: You should run autoupdate. ./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from... m4/acinclude.m4:7: AC_DNET_SOCKADDR_SA_LEN is expanded from... configure.ac:193: the top level configure.ac:196: warning: The macro `AC_TRY_COMPILE' is obsolete. configure.ac:196: You should run autoupdate. ./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from... m4/acinclude.m4:51: AC_DNET_ARPREQ_ARP_DEV is expanded from... configure.ac:196: the top level configure.ac:199: warning: The macro `AC_TRY_COMPILE' is obsolete. configure.ac:199: You should run autoupdate. ./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from... m4/acinclude.m4:72: AC_DNET_ROUTE_RT_MSGHDR is expanded from... configure.ac:199: the top level configure.ac:214: warning: The macro `AC_TRY_COMPILE' is obsolete. configure.ac:214: You should run autoupdate. ./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from... m4/acinclude.m4:137: AC_DNET_LINUX_PF_PACKET is expanded from... configure.ac:214: the top level configure.ac:329: warning: AC_OUTPUT should be used without arguments. configure.ac:329: You should run autoupdate. autoreconf: running: /usr/bin/autoheader --force autoheader: warning: WARNING: Using auxiliary files such as 'acconfig.h', 'config.h.bot' autoheader: WARNING: and 'config.h.top', to define templates for 'config.h.in' autoheader: WARNING: is deprecated and discouraged. autoheader: autoheader: WARNING: Using the third argument of 'AC_DEFINE_UNQUOTED' and autoheader: WARNING: 'AC_DEFINE' allows one to define a template without autoheader: WARNING: 'acconfig.h': autoheader: autoheader: WARNING: AC_DEFINE([NEED_FUNC_MAIN], 1, autoheader: [Define if a function 'main' is needed.]) autoheader: autoheader: WARNING: More sophisticated templates can also be produced, see the autoheader: WARNING: documentation. autoreconf: running: automake --add-missing --copy --force-missing configure.ac:18: installing 'config/compile' configure.ac:14: installing 'config/missing' parallel-tests: installing 'config/test-driver' autoreconf: Leaving directory '.' ndisc-linux.c: In function 'ndisc_modify': ndisc-linux.c:78:24: warning: unused variable 'rta' [-Wunused-variable] 78 | struct rtattr *rta; | ^~~ rand.c: In function 'rand_open': rand.c:84:17: warning: ignoring return value of 'read' declared with attribute 'warn_unused_result' [-Wunused-result] 84 | read(fd, seed + sizeof(*tv), sizeof(seed) - sizeof(*tv)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../include/config.h:298:5: warning: type of 'strlcpy' does not match original declaration [-Wlto-type-mismatch] 298 | int strlcpy(char *, const char *, int); | ^ strlcpy.c:43:1: note: return value type mismatch 43 | strlcpy(dst, src, siz) | ^ strlcpy.c:43:1: note: type 'size_t' should match type 'int' strlcpy.c:43:1: note: 'strlcpy' was previously declared here strlcpy.c:43:1: note: code may be misoptimized unless '-fno-strict-aliasing' is used In file included from check_fw.c:10: check_fw.c: In function 'test_fw_openclose_fn': check_fw.c:21:47: warning: too many arguments for format [-Wformat-extra-args] 21 | fail_unless((fw = fw_open()) != NULL, "open failed"); | ^~~~~~~~~~~~~ check_fw.c:22:50: warning: too many arguments for format [-Wformat-extra-args] 22 | fail_unless((fw = fw_close(fw)) == NULL, "closed failed"); | ^~~~~~~~~~~~~~~ check_fw.c: At top level: check_fw.c:41:12: warning: 'test_fw_close' defined but not used [-Wunused-variable] 41 | START_TEST(test_fw_close) | ^~~~~~~~~~~~~ In file included from check_arp.c:10: check_arp.c: In function 'test_arp_openclose_fn': check_arp.c:21:47: warning: too many arguments for format [-Wformat-extra-args] 21 | fail_unless((a = arp_open()) != NULL, "open failed"); | ^~~~~~~~~~~~~ check_arp.c:22:49: warning: too many arguments for format [-Wformat-extra-args] 22 | fail_unless((a = arp_close(a)) == NULL, "close failed"); | ^~~~~~~~~~~~~~ In file included from check_route.c:10: check_route.c: In function 'test_route_openclose_fn': check_route.c:16:49: warning: too many arguments for format [-Wformat-extra-args] 16 | fail_unless((r = route_open()) != NULL, "open failed"); | ^~~~~~~~~~~~~ check_route.c:17:51: warning: too many arguments for format [-Wformat-extra-args] 17 | fail_unless((r = route_close(r)) == NULL, "close failed"); | ^~~~~~~~~~~~~~ In file included from check_ip.c:10: check_ip.c: In function 'test_ip_openclose_fn': check_ip.c:21:46: warning: too many arguments for format [-Wformat-extra-args] 21 | fail_unless((i = ip_open()) != NULL, "open failed"); | ^~~~~~~~~~~~~ check_ip.c:22:48: warning: too many arguments for format [-Wformat-extra-args] 22 | fail_unless((i = ip_close(i)) == NULL, "close failed"); | ^~~~~~~~~~~~~~ In file included from check_intf.c:10: check_intf.c: In function 'test_intf_openclose_fn': check_intf.c:16:48: warning: too many arguments for format [-Wformat-extra-args] 16 | fail_unless((i = intf_open()) != NULL, "open failed"); | ^~~~~~~~~~~~~ check_intf.c:17:50: warning: too many arguments for format [-Wformat-extra-args] 17 | fail_unless((i = intf_close(i)) == NULL, "closed failed"); | ^~~~~~~~~~~~~~~ check_intf.c: In function 'test_intf_get_fn': check_intf.c:28:46: warning: too many arguments for format [-Wformat-extra-args] 28 | fail_unless(intf_get(i, &ifent) < 0, "didn't fail on empty request"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_intf.c:30:46: warning: too many arguments for format [-Wformat-extra-args] 30 | fail_unless(intf_get(i, &ifent) < 0, "didn't fail on empty name"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from check_blob.c:10: check_blob.c: In function 'test_blob_newfree_fn': check_blob.c:16:47: warning: too many arguments for format [-Wformat-extra-args] 16 | fail_unless((b = blob_new()) != NULL, "new failed"); | ^~~~~~~~~~~~ check_blob.c:17:49: warning: too many arguments for format [-Wformat-extra-args] 17 | fail_unless((b = blob_free(b)) == NULL, "free failed"); | ^~~~~~~~~~~~~ check_blob.c: In function 'test_blob_readwrite_fn': check_blob.c:33:49: warning: too many arguments for format [-Wformat-extra-args] 33 | fail_unless(strcmp(tmp, "foobar") == 0, "read1 failed"); | ^~~~~~~~~~~~~~ check_blob.c:35:49: warning: too many arguments for format [-Wformat-extra-args] 35 | fail_unless(strcmp(tmp, "spazzo") == 0, "read2 failed"); | ^~~~~~~~~~~~~~ check_blob.c:37:49: warning: too many arguments for format [-Wformat-extra-args] 37 | fail_unless(strcmp(tmp, "doofus") == 0, "read3 failed"); | ^~~~~~~~~~~~~~ check_blob.c: In function 'test_blob_insertdelete_fn': check_blob.c:48:52: warning: too many arguments for format [-Wformat-extra-args] 48 | fail_unless(blob_insert(b, "foo", 3) == 3, "insert1 failed"); | ^~~~~~~~~~~~~~~~ check_blob.c:50:52: warning: too many arguments for format [-Wformat-extra-args] 50 | fail_unless(blob_insert(b, "bar", 3) == 3, "insert2 failed"); | ^~~~~~~~~~~~~~~~ check_blob.c:54:48: warning: too many arguments for format [-Wformat-extra-args] 54 | fail_unless(strcmp(tmp,"barfoo") == 0, "read failed"); | ^~~~~~~~~~~~~ check_blob.c:56:51: warning: too many arguments for format [-Wformat-extra-args] 56 | fail_unless(blob_delete(b, NULL, 3) == 3, "delete failed"); | ^~~~~~~~~~~~~~~ check_blob.c:60:45: warning: too many arguments for format [-Wformat-extra-args] 60 | fail_unless(strcmp(tmp,"foo") == 0, "read failed"); | ^~~~~~~~~~~~~ check_blob.c:62:50: warning: too many arguments for format [-Wformat-extra-args] 62 | fail_unless(blob_delete(b, NULL, 4) < 0, "deleted more than size"); | ^~~~~~~~~~~~~~~~~~~~~~~~ check_blob.c:65:17: warning: pointer targets in assignment from 'char *' to 'u_char *' {aka 'unsigned char *'} differ in signedness [-Wpointer-sign] 65 | bf.base = "foobar"; | ^ check_blob.c:69:56: warning: too many arguments for format [-Wformat-extra-args] 69 | fail_unless(blob_insert(&bf, "foobar", 6) < 0, "inserted into fixed"); | ^~~~~~~~~~~~~~~~~~~~~ check_blob.c:70:52: warning: too many arguments for format [-Wformat-extra-args] 70 | fail_unless(blob_delete(&bf, NULL, 3) < 0, "deleted from fixed"); | ^~~~~~~~~~~~~~~~~~~~ check_blob.c: In function 'test_blob_packunpack_fn': check_blob.c:98:13: warning: too many arguments for format [-Wformat-extra-args] 98 | "pack failed"); | ^~~~~~~~~~~~~ check_blob.c:106:13: warning: too many arguments for format [-Wformat-extra-args] 106 | "unpack failed"); | ^~~~~~~~~~~~~~~ check_blob.c:114:22: warning: too many arguments for format [-Wformat-extra-args] 114 | fail("unpacked weird crap"); | ^~~~~~~~~~~~~~~~~~~~~ check_blob.c: In function 'test_blob_seek_fn': check_blob.c:127:43: warning: too many arguments for format [-Wformat-extra-args] 127 | fail_unless(blob_skip(b, 3) == 3, "skip failed"); | ^~~~~~~~~~~~~ check_blob.c:128:43: warning: too many arguments for format [-Wformat-extra-args] 128 | fail_unless(blob_skip(b, 3) == 6, "skip to end failed"); | ^~~~~~~~~~~~~~~~~~~~ check_blob.c:129:42: warning: too many arguments for format [-Wformat-extra-args] 129 | fail_unless(blob_skip(b, 1) < 0, "skipped past end"); | ^~~~~~~~~~~~~~~~~~ check_blob.c:130:54: warning: too many arguments for format [-Wformat-extra-args] 130 | fail_unless(blob_seek(b, -1, SEEK_END) == 5, "end seek failed"); | ^~~~~~~~~~~~~~~~~ check_blob.c:131:53: warning: too many arguments for format [-Wformat-extra-args] 131 | fail_unless(blob_seek(b, 1, SEEK_SET) == 1, "set seek failed"); | ^~~~~~~~~~~~~~~~~ check_blob.c:133:53: warning: too many arguments for format [-Wformat-extra-args] 133 | fail_unless(blob_seek(b, -1, SEEK_CUR) < 0, "seeked past 0"); | ^~~~~~~~~~~~~~~ check_blob.c:134:53: warning: too many arguments for format [-Wformat-extra-args] 134 | fail_unless(blob_seek(b, 3, SEEK_CUR) == 3, "cur seek failed"); | ^~~~~~~~~~~~~~~~~ check_blob.c: In function 'test_blob_index_fn': check_blob.c:146:52: warning: too many arguments for format [-Wformat-extra-args] 146 | fail_unless(blob_index(b, "this", 4) == 0, "index start failed"); | ^~~~~~~~~~~~~~~~~~~~ check_blob.c:147:50: warning: too many arguments for format [-Wformat-extra-args] 147 | fail_unless(blob_index(b, "!", 1) == 19, "index end failed"); | ^~~~~~~~~~~~~~~~~~ check_blob.c:148:53: warning: too many arguments for format [-Wformat-extra-args] 148 | fail_unless(blob_index(b, "only ", 5) == 8, "index middle failed"); | ^~~~~~~~~~~~~~~~~~~~~ check_blob.c:149:51: warning: too many arguments for format [-Wformat-extra-args] 149 | fail_unless(blob_rindex(b, "!", 1) == 19, "rindex end failed"); | ^~~~~~~~~~~~~~~~~~~ check_blob.c:150:53: warning: too many arguments for format [-Wformat-extra-args] 150 | fail_unless(blob_rindex(b, "this", 4) == 0, "rindex start failed"); | ^~~~~~~~~~~~~~~~~~~~~ check_blob.c:151:54: warning: too many arguments for format [-Wformat-extra-args] 151 | fail_unless(blob_rindex(b, "only ", 5) == 8, "rindex middle failed"); | ^~~~~~~~~~~~~~~~~~~~~~ In file included from check_rand.c:10: check_rand.c: In function 'test_rand_openclose_fn': check_rand.c:16:48: warning: too many arguments for format [-Wformat-extra-args] 16 | fail_unless((r = rand_open()) != NULL, "open failed"); | ^~~~~~~~~~~~~ check_rand.c:17:50: warning: too many arguments for format [-Wformat-extra-args] 17 | fail_unless((r = rand_close(r)) == NULL, "close failed"); | ^~~~~~~~~~~~~~ check_rand.c: In function 'test_rand_get_fn': check_rand.c:27:54: warning: too many arguments for format [-Wformat-extra-args] 27 | fail_unless(rand_get(r, &i, sizeof(i)) == 0, "get failed"); | ^~~~~~~~~~~~ check_rand.c: In function 'test_rand_set_fn': check_rand.c:43:59: warning: too many arguments for format [-Wformat-extra-args] 43 | fail_unless(rand_get(r, buf1, sizeof(buf1)) == 0, "get failed"); | ^~~~~~~~~~~~ check_rand.c:44:60: warning: too many arguments for format [-Wformat-extra-args] 44 | fail_unless(memcmp(buf1, buf2, sizeof(buf1)) != 0, "get b0rked"); | ^~~~~~~~~~~~ check_rand.c:45:54: warning: too many arguments for format [-Wformat-extra-args] 45 | fail_unless(rand_set(r, &i, sizeof(i)) == 0, "set failed"); | ^~~~~~~~~~~~ check_rand.c:46:59: warning: too many arguments for format [-Wformat-extra-args] 46 | fail_unless(rand_get(r, buf2, sizeof(buf2)) == 0, "get2 failed"); | ^~~~~~~~~~~~~ check_rand.c:47:60: warning: too many arguments for format [-Wformat-extra-args] 47 | fail_unless(memcmp(buf1, buf2, sizeof(buf1)) != 0, "set/get b0rked"); | ^~~~~~~~~~~~~~~~ check_rand.c:48:54: warning: too many arguments for format [-Wformat-extra-args] 48 | fail_unless(rand_set(r, &i, sizeof(i)) == 0, "set2 failed"); | ^~~~~~~~~~~~~ check_rand.c:49:59: warning: too many arguments for format [-Wformat-extra-args] 49 | fail_unless(rand_get(r, buf1, sizeof(buf1)) == 0, "get3 failed"); | ^~~~~~~~~~~~~ check_rand.c:50:60: warning: too many arguments for format [-Wformat-extra-args] 50 | fail_unless(memcmp(buf1, buf2, sizeof(buf1)) == 0, "set b0rked"); | ^~~~~~~~~~~~ check_rand.c: In function 'test_rand_shuffle_fn': check_rand.c:64:53: warning: too many arguments for format [-Wformat-extra-args] 64 | fail_unless(strcmp(buf, SHUFFLE_TEXT) != 0, "shuffle failed"); | ^~~~~~~~~~~~~~~~ In file included from check_addr.c:16: check_addr.c: In function 'test_addr_pack_fn': check_addr.c:46:53: warning: too many arguments for format [-Wformat-extra-args] 46 | fail_unless(memcmp(&a, &b, sizeof(a)) == 0, "got different address"); | ^~~~~~~~~~~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_cmp_fn': check_addr.c:56:44: warning: too many arguments for format [-Wformat-extra-args] 56 | fail_unless(addr_cmp(&a, &b) == 0, "failed on equal addresses"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:58:44: warning: too many arguments for format [-Wformat-extra-args] 58 | fail_unless(addr_cmp(&a, &b) != 0, "failed on different addr_type"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:60:43: warning: too many arguments for format [-Wformat-extra-args] 60 | fail_unless(addr_cmp(&a, &b) > 0, "failed on lesser addr_bits"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:62:44: warning: too many arguments for format [-Wformat-extra-args] 62 | fail_unless(addr_cmp(&a, &b) != 0, "failed on different addr_ip"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:66:43: warning: too many arguments for format [-Wformat-extra-args] 66 | fail_unless(addr_cmp(&a, &b) < 0, "failed on lesser addr compare"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:67:43: warning: too many arguments for format [-Wformat-extra-args] 67 | fail_unless(addr_cmp(&b, &a) > 0, "failed on greater addr compare"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_bcast_fn': check_addr.c:77:53: warning: too many arguments for format [-Wformat-extra-args] 77 | fail_unless(b.addr_ip == htonl(0x01020307), "wrong for /29"); | ^~~~~~~~~~~~~~~ check_addr.c:79:53: warning: too many arguments for format [-Wformat-extra-args] 79 | fail_unless(b.addr_ip == htonl(0x0102ffff), "wrong for /16"); | ^~~~~~~~~~~~~~~ check_addr.c:81:52: warning: too many arguments for format [-Wformat-extra-args] 81 | fail_unless(b.addr_ip == htonl(0x7ffffff), "wrong for /5"); | ^~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_net_fn': check_addr.c:91:53: warning: too many arguments for format [-Wformat-extra-args] 91 | fail_unless(b.addr_ip == htonl(0x01020300), "wrong for /24"); | ^~~~~~~~~~~~~~~ check_addr.c:96:44: warning: too many arguments for format [-Wformat-extra-args] 96 | fail_unless(addr_cmp(&a, &b) == 0, "IPv6 net failed"); | ^~~~~~~~~~~~~~~~~ In file included from ../../include/dnet.h:16, from check_addr.c:10: check_addr.c: In function 'test_addr_ntop_fn': ../../include/dnet/ip6.h:161:9: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 161 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:161:9: note: in definition of macro 'IP6_ADDR_UNSPEC' 161 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:161:9: note: (near initialization for 'ntop_ip6[0].n') 161 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:161:9: note: in definition of macro 'IP6_ADDR_UNSPEC' 161 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:163:9: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 163 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:163:9: note: in definition of macro 'IP6_ADDR_LOOPBACK' 163 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:163:9: note: (near initialization for 'ntop_ip6[1].n') 163 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:163:9: note: in definition of macro 'IP6_ADDR_LOOPBACK' 163 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:108:19: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 108 | { "\xfe\x08\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:108:19: note: (near initialization for 'ntop_ip6[2].n') check_addr.c:110:19: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 110 | { "\xff\xff\xff\xff\xff\xff\xff\xff" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:110:19: note: (near initialization for 'ntop_ip6[3].n') check_addr.c:113:19: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 113 | { "\xca\xfe\xba\xbe\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:113:19: note: (near initialization for 'ntop_ip6[4].n') check_addr.c:115:19: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 115 | { "\xfe\xed\xfa\xce\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:115:19: note: (near initialization for 'ntop_ip6[5].n') check_addr.c:117:19: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 117 | { "\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:117:19: note: (near initialization for 'ntop_ip6[6].n') check_addr.c:119:19: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 119 | { "\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:119:19: note: (near initialization for 'ntop_ip6[7].n') check_addr.c:128:55: warning: too many arguments for format [-Wformat-extra-args] 128 | fail_unless(strcmp(buf, "1.2.3.255/23") == 0, "bad /23 handling"); | ^~~~~~~~~~~~~~~~~~ check_addr.c:130:54: warning: too many arguments for format [-Wformat-extra-args] 130 | fail_unless(strcmp(buf, "1.2.3.255/0") == 0, "bad /0 handling"); | ^~~~~~~~~~~~~~~~~ check_addr.c:132:52: warning: too many arguments for format [-Wformat-extra-args] 132 | fail_unless(strcmp(buf, "1.2.3.255") == 0, "bad /32 handling"); | ^~~~~~~~~~~~~~~~~~ check_addr.c:133:52: warning: too many arguments for format [-Wformat-extra-args] 133 | fail_unless(addr_ntop(&a, buf, 9) == NULL, "buffer overflow?"); | ^~~~~~~~~~~~~~~~~~ check_addr.c:138:40: warning: too many arguments for format [-Wformat-extra-args] 138 | "00:00:00:00:00:00") == 0, "bad empty MAC handling"); | ^~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:141:40: warning: too many arguments for format [-Wformat-extra-args] 141 | "00:0d:0e:0a:0d:00") == 0, "b0rked"); | ^~~~~~~~ check_addr.c:143:62: warning: too many arguments for format [-Wformat-extra-args] 143 | fail_unless(addr_ntop(&a, buf, sizeof(buf)) == NULL, "took /16 mask"); | ^~~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_pton_fn': ../../include/dnet/ip6.h:161:9: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 161 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:161:9: note: in definition of macro 'IP6_ADDR_UNSPEC' 161 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:161:9: note: (near initialization for 'pton_ip6[0].n') 161 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:161:9: note: in definition of macro 'IP6_ADDR_UNSPEC' 161 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:163:9: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 163 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:163:9: note: in definition of macro 'IP6_ADDR_LOOPBACK' 163 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:163:9: note: (near initialization for 'pton_ip6[1].n') 163 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../include/dnet/ip6.h:163:9: note: in definition of macro 'IP6_ADDR_LOOPBACK' 163 | "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:162:29: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 162 | { "fe08::", "\xfe\x08\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:162:29: note: (near initialization for 'pton_ip6[2].n') check_addr.c:164:30: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 164 | { "fe08::1", "\xfe\x08\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:164:30: note: (near initialization for 'pton_ip6[3].n') check_addr.c:166:62: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 166 | { "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", "\xff\xff\xff\xff" | ^~~~~~~~~~~~~~~~~~ check_addr.c:166:62: note: (near initialization for 'pton_ip6[4].n') check_addr.c:168:50: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 168 | { "cafe::babe:dead:beef:0:ffff", "\xca\xfe\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:168:50: note: (near initialization for 'pton_ip6[5].n') check_addr.c:170:32: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 170 | { "::1.2.3.4", "\x00\x00\x00\x00\x00\x00\x00\x00" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:170:32: note: (near initialization for 'pton_ip6[6].n') check_addr.c:175:34: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 175 | { "0:d:e:a:d:0", "\x00\x0d\x0e\x0a\x0d\x00" }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:175:34: note: (near initialization for 'pton_eth[0].n') In file included from ../../include/dnet.h:14: ../../include/dnet/eth.h:53:33: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 53 | #define ETH_ADDR_BROADCAST "\xff\xff\xff\xff\xff\xff" | ^~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:176:40: note: in expansion of macro 'ETH_ADDR_BROADCAST' 176 | { "ff:ff:ff:ff:ff:ff", ETH_ADDR_BROADCAST }, | ^~~~~~~~~~~~~~~~~~ ../../include/dnet/eth.h:53:33: note: (near initialization for 'pton_eth[1].n') 53 | #define ETH_ADDR_BROADCAST "\xff\xff\xff\xff\xff\xff" | ^~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:176:40: note: in expansion of macro 'ETH_ADDR_BROADCAST' 176 | { "ff:ff:ff:ff:ff:ff", ETH_ADDR_BROADCAST }, | ^~~~~~~~~~~~~~~~~~ check_addr.c:177:37: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 177 | { "00:d:0e:a:0d:0", "\x00\x0d\x0e\x0a\x0d\x00" }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:177:37: note: (near initialization for 'pton_eth[2].n') check_addr.c:180:34: warning: pointer targets in initialization of 'u_char *' {aka 'unsigned char *'} from 'char *' differ in signedness [-Wpointer-sign] 180 | { "0:0:0:0:0:0", "\x00\x00\x00\x00\x00\x00" }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:180:34: note: (near initialization for 'pton_eth[7].n') check_addr.c:188:44: warning: too many arguments for format [-Wformat-extra-args] 188 | fail_unless(addr_cmp(&a, &b) == 0, "bad /17 handling"); | ^~~~~~~~~~~~~~~~~~ check_addr.c:190:44: warning: too many arguments for format [-Wformat-extra-args] 190 | fail_unless(addr_cmp(&a, &b) == 0, "bad handling of missing /32"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:191:54: warning: too many arguments for format [-Wformat-extra-args] 191 | fail_unless(addr_pton("1.2.3.4/33", &b) < 0, "accepted /33"); | ^~~~~~~~~~~~~~ check_addr.c:192:53: warning: too many arguments for format [-Wformat-extra-args] 192 | fail_unless(addr_pton("1.2.3.256", &b) < 0, "accepted .256"); | ^~~~~~~~~~~~~~~ check_addr.c:193:53: warning: too many arguments for format [-Wformat-extra-args] 193 | fail_unless(addr_pton("1.2.3.4.5", &b) < 0, "accepted quint octet"); | ^~~~~~~~~~~~~~~~~~~~~~ check_addr.c:194:49: warning: too many arguments for format [-Wformat-extra-args] 194 | fail_unless(addr_pton("1.2.3", &b) < 0, "accepted triple octet"); | ^~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:195:53: warning: too many arguments for format [-Wformat-extra-args] 195 | fail_unless(addr_pton("localhost", &b) < 0, "barfed on localhost"); | ^~~~~~~~~~~~~~~~~~~~~ check_addr.c:197:13: warning: too many arguments for format [-Wformat-extra-args] 197 | "barfed on localhost/24"); | ^~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c:200:44: warning: too many arguments for format [-Wformat-extra-args] 200 | fail_unless(addr_cmp(&a, &b) == 0, "bad /255.255.255.0 handling"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_ntoa_fn': check_addr.c:237:21: warning: too many arguments for format [-Wformat-extra-args] 237 | "barfed on 1.2.3.4 loop"); | ^~~~~~~~~~~~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_ntos_fn': check_addr.c:252:56: warning: too many arguments for format [-Wformat-extra-args] 252 | fail_unless(memcmp(&s1, &s2, sizeof(s1)) == 0, "bad sockaddr_in"); | ^~~~~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_ston_fn': check_addr.c:263:30: warning: argument to 'sizeof' in 'memcpy' call is the same expression as the destination; did you mean to remove the addressof? [-Wsizeof-pointer-memaccess] 263 | memcpy(&b, &a, sizeof(&b)); | ^ check_addr.c:265:30: warning: argument to 'sizeof' in 'memcpy' call is the same expression as the destination; did you mean to remove the addressof? [-Wsizeof-pointer-memaccess] 265 | memcpy(&t, &s, sizeof(&t)); | ^ check_addr.c:268:53: warning: too many arguments for format [-Wformat-extra-args] 268 | fail_unless(memcmp(&a, &b, sizeof(a)) == 0, "bad addr"); | ^~~~~~~~~~ check_addr.c:275:50: warning: too many arguments for format [-Wformat-extra-args] 275 | fail_unless(addr_ston((SA *)&s, &b) < 0, "sin_family == 123"); | ^~~~~~~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_btos_fn': check_addr.c:286:54: warning: too many arguments for format [-Wformat-extra-args] 286 | fail_unless(addr_btos(a.addr_bits, &s) == 0, "b0rked"); | ^~~~~~~~ check_addr.c: In function 'test_addr_stob_fn': check_addr.c:297:40: warning: too many arguments for format [-Wformat-extra-args] 297 | fail_unless(a.addr_bits == 24, "b0rked"); | ^~~~~~~~ check_addr.c:301:32: warning: too many arguments for format [-Wformat-extra-args] 301 | a.addr_bits == 24, "sin_family = 0"); | ^~~~~~~~~~~~~~~~ check_addr.c: In function 'test_addr_btom_fn': check_addr.c:313:48: warning: too many arguments for format [-Wformat-extra-args] 313 | fail_unless(mask == htonl(0xffffff00), "b0rked"); | ^~~~~~~~ check_addr.c: In function 'test_addr_mtob_fn': check_addr.c:324:40: warning: too many arguments for format [-Wformat-extra-args] 324 | fail_unless(a.addr_bits == 24, "b0rked"); | ^~~~~~~~ In function 'memcpy', inlined from 'test_blob_packunpack_fn' at check_blob.c:87:2: /usr/include/bits/string_fortified.h:29:10: warning: '__builtin_memcpy' reading 6 bytes from a region of size 5 [-Wstringop-overread] 29 | return __builtin___memcpy_chk (__dest, __src, __len, | ^ ./dnet.c: In function ‘__pyx_f_4dnet_3eth_get’: ./dnet.c:584:49: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 584 | __pyx_2 = PyBytes_FromStringAndSize(__pyx_v_ea.data,6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} In file included from /usr/include/python3.8/Python.h:96, from ./dnet.c:5: /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3eth_set’: ./dnet.c:616:46: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 616 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_ea.data,__pyx_v_value,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3eth___dealloc__’: ./dnet.c:694:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 694 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_eth_ntoa’: ./dnet.c:712:46: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 712 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_ea.data,__pyx_v_buf,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_eth_aton’: ./dnet.c:764:49: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 764 | __pyx_3 = PyBytes_FromStringAndSize(__pyx_v_ea.data,6); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_eth_pack_hdr’: ./dnet.c:802:45: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 802 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_s.data,__pyx_v_src,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; goto __pyx_L1;} | ~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c:806:45: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 806 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_d.data,__pyx_v_dst,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; goto __pyx_L1;} | ~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_2ip___dealloc__’: ./dnet.c:919:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 919 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_ip_checksum’: ./dnet.c:1047:3: warning: ‘PyObject_AsReadBuffer’ is deprecated [-Wdeprecated-declarations] 1047 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_pkt,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ^~~~~~~ In file included from /usr/include/python3.8/Python.h:147: /usr/include/python3.8/abstract.h:337:17: note: declared here 337 | PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, | ^~~~~~~~~~~~~~~~~~~~~ ./dnet.c:1047:49: warning: passing argument 2 of ‘PyObject_AsReadBuffer’ from incompatible pointer type [-Wincompatible-pointer-types] 1047 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_pkt,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ~^~~~~~~~~~~ | | | char ** /usr/include/python3.8/abstract.h:338:52: note: expected ‘const void **’ but argument is of type ‘char **’ 338 | const void **buffer, | ~~~~~~~~~~~~~^~~~~~ ./dnet.c:1047:62: warning: passing argument 3 of ‘PyObject_AsReadBuffer’ from incompatible pointer type [-Wincompatible-pointer-types] 1047 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_pkt,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ~^~~~~~~~~~~ | | | int * /usr/include/python3.8/abstract.h:339:51: note: expected ‘Py_ssize_t *’ {aka ‘long int *’} but argument is of type ‘int *’ 339 | Py_ssize_t *buffer_len); | ~~~~~~~~~~~~^~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_ip_cksum_add’: ./dnet.c:1128:3: warning: ‘PyObject_AsReadBuffer’ is deprecated [-Wdeprecated-declarations] 1128 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ^~~~~~~ /usr/include/python3.8/abstract.h:337:17: note: declared here 337 | PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, | ^~~~~~~~~~~~~~~~~~~~~ ./dnet.c:1128:49: warning: passing argument 2 of ‘PyObject_AsReadBuffer’ from incompatible pointer type [-Wincompatible-pointer-types] 1128 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ~^~~~~~~~~~~ | | | char ** /usr/include/python3.8/abstract.h:338:52: note: expected ‘const void **’ but argument is of type ‘char **’ 338 | const void **buffer, | ~~~~~~~~~~~~~^~~~~~ ./dnet.c:1128:62: warning: passing argument 3 of ‘PyObject_AsReadBuffer’ from incompatible pointer type [-Wincompatible-pointer-types] 1128 | __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) == 0); | ~^~~~~~~~~~~ | | | int * /usr/include/python3.8/abstract.h:339:51: note: expected ‘Py_ssize_t *’ {aka ‘long int *’} but argument is of type ‘int *’ 339 | Py_ssize_t *buffer_len); | ~~~~~~~~~~~~^~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr___init__’: ./dnet.c:1474:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1474 | if (__pyx_1=PyObject_RichCompareBool(__pyx_v_addrtxt, Py_None, Py_EQ) == 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_4data___get__’: ./dnet.c:1662:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1662 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:1677:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1677 | if (__pyx_3=PyObject_RichCompareBool(__pyx_2, __pyx_1, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:1692:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1692 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_3eth___get__’: ./dnet.c:1742:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1742 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2,Py_EQ ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; goto __pyx_L1;} | ^~~~~~~ In file included from ../include/dnet.h:17, from ./dnet.c:24: ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1758:92: note: in expansion of macro ‘addr_data8’ 1758 | __pyx_2 = PyBytes_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; goto __pyx_L1;} | ^~~~~~~~~~ /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_3eth___set__’: ./dnet.c:1792:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1792 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2,Py_EQ ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; goto __pyx_L1;} | ^~~~~~~ ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1808:89: note: in expansion of macro ‘addr_data8’ 1808 | __pyx_2 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; goto __pyx_L1;} | ^~~~~~~~~~ ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_2ip___get__’: ./dnet.c:1851:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1851 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; goto __pyx_L1;} | ^~~~~~~ ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1867:92: note: in expansion of macro ‘addr_data8’ 1867 | __pyx_2 = PyBytes_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; goto __pyx_L1;} | ^~~~~~~~~~ /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_2ip___set__’: ./dnet.c:1915:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1915 | if (__pyx_1 = PyObject_RichCompareBool(__pyx_2, __pyx_3, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; goto __pyx_L1;} | ^~~~~~~ ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1931:91: note: in expansion of macro ‘addr_data8’ 1931 | __pyx_3 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; goto __pyx_L1;} | ^~~~~~~~~~ ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_3ip6___get__’: ./dnet.c:1976:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 1976 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; goto __pyx_L1;} | ^~~~~~~ ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘PyBytes_FromStringAndSize’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:1992:92: note: in expansion of macro ‘addr_data8’ 1992 | __pyx_2 = PyBytes_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,16); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; goto __pyx_L1;} | ^~~~~~~~~~ /usr/include/python3.8/bytesobject.h:51:50: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 51 | PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); | ^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr_3ip6___set__’: ./dnet.c:2026:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2026 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; goto __pyx_L1;} | ^~~~~~~ ../include/dnet/addr.h:35:33: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 35 | #define addr_data8 __addr_u.__data8 ./dnet.c:2042:89: note: in expansion of macro ‘addr_data8’ 2042 | __pyx_2 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,16); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; goto __pyx_L1;} | ^~~~~~~~~~ ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr___hash__’: ./dnet.c:2413:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2413 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:2423:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2423 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 579; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:2433:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2433 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:2467:3: warning: label ‘__pyx_L4’ defined but not used [-Wunused-label] 2467 | __pyx_L4:; | ^~~~~~~~ ./dnet.c:2465:5: warning: label ‘__pyx_L3’ defined but not used [-Wunused-label] 2465 | __pyx_L3:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr___int__’: ./dnet.c:2519:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2519 | if (__pyx_3=PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4addr___iter__’: ./dnet.c:2599:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 2599 | if (__pyx_1 = PyObject_RichCompareBool(__pyx_2, __pyx_3,Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3arp_loop’: ./dnet.c:3121:88: warning: passing argument 2 of ‘arp_loop’ from incompatible pointer type [-Wincompatible-pointer-types] 3121 | __pyx_1 = PyLong_FromLong(arp_loop(((struct __pyx_obj_4dnet_arp *)__pyx_v_self)->arp,__pyx_f_4dnet___arp_callback,((void (*))__pyx_v__arg))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; goto __pyx_L1;} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int (*)(struct arp_entry *, void *) In file included from ../include/dnet.h:18: ../include/dnet/arp.h:101:43: note: expected ‘arp_handler’ {aka ‘int (*)(const struct arp_entry *, void *)’} but argument is of type ‘int (*)(struct arp_entry *, void *)’ 101 | int arp_loop(arp_t *arp, arp_handler callback, void *arg); | ~~~~~~~~~~~~^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3arp___dealloc__’: ./dnet.c:3214:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 3214 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_arp_pack_hdr_ethip’: ./dnet.c:3250:46: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 3250 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_sh.data,__pyx_v_sha,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c:3254:46: warning: pointer targets in passing argument 1 of ‘__pyx_f_4dnet___memcpy’ differ in signedness [-Wpointer-sign] 3254 | __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_dh.data,__pyx_v_dha,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; goto __pyx_L1;} | ~~~~~~~~~~^~~~~ | | | uint8_t * {aka unsigned char *} ./dnet.c:401:48: note: expected ‘char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’} 401 | static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) { | ~~~~~~~^~~~~~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_ifent_to_dict’: ./dnet.c:3495:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 3495 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:3517:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 3517 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_2, __pyx_1, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:3539:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 3539 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_2, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:3594:5: warning: label ‘__pyx_L7’ defined but not used [-Wunused-label] 3594 | __pyx_L7:; | ^~~~~~~~ ./dnet.c:3592:7: warning: label ‘__pyx_L6’ defined but not used [-Wunused-label] 3592 | __pyx_L6:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_dict_to_ifent’: ./dnet.c:3748:5: warning: label ‘__pyx_L9’ defined but not used [-Wunused-label] 3748 | __pyx_L9:; | ^~~~~~~~ ./dnet.c:3746:7: warning: label ‘__pyx_L8’ defined but not used [-Wunused-label] 3746 | __pyx_L8:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4intf_loop’: ./dnet.c:4138:91: warning: passing argument 2 of ‘intf_loop’ from incompatible pointer type [-Wincompatible-pointer-types] 4138 | __pyx_1 = PyLong_FromLong(intf_loop(((struct __pyx_obj_4dnet_intf *)__pyx_v_self)->intf,__pyx_f_4dnet___intf_callback,((void (*))__pyx_v__arg))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; goto __pyx_L1;} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int (*)(struct intf_entry *, void *) In file included from ../include/dnet.h:25: ../include/dnet/intf.h:64:44: note: expected ‘intf_handler’ {aka ‘int (*)(const struct intf_entry *, void *)’} but argument is of type ‘int (*)(struct intf_entry *, void *)’ 64 | int intf_loop(intf_t *i, intf_handler callback, void *arg); | ~~~~~~~~~~~~~^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4intf___dealloc__’: ./dnet.c:4228:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 4228 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_5route_loop’: ./dnet.c:4559:94: warning: passing argument 2 of ‘route_loop’ from incompatible pointer type [-Wincompatible-pointer-types] 4559 | __pyx_1 = PyLong_FromLong(route_loop(((struct __pyx_obj_4dnet_route *)__pyx_v_self)->route,__pyx_f_4dnet___route_callback,((void (*))__pyx_v__arg))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; goto __pyx_L1;} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int (*)(struct route_entry *, void *) In file included from ../include/dnet.h:26: ../include/dnet/route.h:34:47: note: expected ‘route_handler’ {aka ‘int (*)(const struct route_entry *, void *)’} but argument is of type ‘int (*)(struct route_entry *, void *)’ 34 | int route_loop(route_t *r, route_handler callback, void *arg); | ~~~~~~~~~~~~~~^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_5route___dealloc__’: ./dnet.c:4649:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 4649 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_rule_to_dict’: ./dnet.c:4711:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 4711 | if (__pyx_2 = PyObject_RichCompareBool(__pyx_1, __pyx_3, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:4733:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 4733 | if (__pyx_2 = PyObject_RichCompareBool(__pyx_3, __pyx_1, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1198; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_dict_to_rule’: ./dnet.c:4861:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 4861 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_4, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; goto __pyx_L1;} | ^~~~~~~ ./dnet.c:4868:11: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 4868 | if (__pyx_3 = PyObject_RichCompareBool(__pyx_1, __pyx_4, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_2fw_loop’: ./dnet.c:5219:85: warning: passing argument 2 of ‘fw_loop’ from incompatible pointer type [-Wincompatible-pointer-types] 5219 | __pyx_1 = PyLong_FromLong(fw_loop(((struct __pyx_obj_4dnet_fw *)__pyx_v_self)->fw,__pyx_f_4dnet___fw_callback,((void (*))__pyx_v__arg))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; goto __pyx_L1;} | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | int (*)(struct fw_rule *, void *) In file included from ../include/dnet.h:27: ../include/dnet/fw.h:50:38: note: expected ‘fw_handler’ {aka ‘int (*)(const struct fw_rule *, void *)’} but argument is of type ‘int (*)(struct fw_rule *, void *)’ 50 | int fw_loop(fw_t *f, fw_handler callback, void *arg); | ~~~~~~~~~~~^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_2fw___dealloc__’: ./dnet.c:5309:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 5309 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4rand_get’: ./dnet.c:5373:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 5373 | if (__pyx_2 = PyObject_RichCompareBool(__pyx_v_len, __pyx_1, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4rand_xrange’: ./dnet.c:5575:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 5575 | if (__pyx_1 = PyObject_RichCompareBool(__pyx_v_stop, Py_None, Py_EQ) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; goto __pyx_L1;} | ^~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_4rand___dealloc__’: ./dnet.c:5643:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 5643 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_13__rand_xrange___init__’: ./dnet.c:5739:3: warning: label ‘__pyx_L5’ defined but not used [-Wunused-label] 5739 | __pyx_L5:; | ^~~~~~~~ ./dnet.c:5732:5: warning: label ‘__pyx_L4’ defined but not used [-Wunused-label] 5732 | __pyx_L4:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_13__rand_xrange___iter__’: ./dnet.c:5801:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 5801 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_13__rand_xrange___len__’: ./dnet.c:5820:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 5820 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_13__rand_xrange___next__’: ./dnet.c:5893:5: warning: label ‘__pyx_L6’ defined but not used [-Wunused-label] 5893 | __pyx_L6:; | ^~~~~~~~ ./dnet.c:5891:7: warning: label ‘__pyx_L5’ defined but not used [-Wunused-label] 5891 | __pyx_L5:; | ^~~~~~~~ ./dnet.c:5857:5: warning: label ‘__pyx_L3’ defined but not used [-Wunused-label] 5857 | __pyx_L3:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3tun_close’: ./dnet.c:6149:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 6149 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_f_4dnet_3tun___dealloc__’: ./dnet.c:6183:3: warning: label ‘__pyx_L1’ defined but not used [-Wunused-label] 6183 | __pyx_L1:; | ^~~~~~~~ ./dnet.c: In function ‘__pyx_tp_new_4dnet_eth’: ./dnet.c:6405:31: warning: unused variable ‘p’ [-Wunused-variable] 6405 | struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_eth’: ./dnet.c:6410:31: warning: unused variable ‘p’ [-Wunused-variable] 6410 | struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_eth’: ./dnet.c:6425:31: warning: unused variable ‘p’ [-Wunused-variable] 6425 | struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o; | ^ ./dnet.c:6424:7: warning: unused variable ‘e’ [-Wunused-variable] 6424 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_eth’: ./dnet.c:6430:31: warning: unused variable ‘p’ [-Wunused-variable] 6430 | struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o; | ^ ./dnet.c: At top level: ./dnet.c:6478:3: warning: excess elements in struct initializer 6478 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:6478:3: note: (near initialization for ‘__pyx_tp_as_number_eth’) ./dnet.c:6479:3: warning: excess elements in struct initializer 6479 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:6479:3: note: (near initialization for ‘__pyx_tp_as_number_eth’) ./dnet.c:6504:3: warning: excess elements in struct initializer 6504 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:6504:3: note: (near initialization for ‘__pyx_tp_as_buffer_eth’) ./dnet.c:6505:3: warning: excess elements in struct initializer 6505 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:6505:3: note: (near initialization for ‘__pyx_tp_as_buffer_eth’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_ip’: ./dnet.c:6558:30: warning: unused variable ‘p’ [-Wunused-variable] 6558 | struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_ip’: ./dnet.c:6563:30: warning: unused variable ‘p’ [-Wunused-variable] 6563 | struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_ip’: ./dnet.c:6578:30: warning: unused variable ‘p’ [-Wunused-variable] 6578 | struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o; | ^ ./dnet.c:6577:7: warning: unused variable ‘e’ [-Wunused-variable] 6577 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_ip’: ./dnet.c:6583:30: warning: unused variable ‘p’ [-Wunused-variable] 6583 | struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o; | ^ ./dnet.c: At top level: ./dnet.c:6629:3: warning: excess elements in struct initializer 6629 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:6629:3: note: (near initialization for ‘__pyx_tp_as_number_ip’) ./dnet.c:6630:3: warning: excess elements in struct initializer 6630 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:6630:3: note: (near initialization for ‘__pyx_tp_as_number_ip’) ./dnet.c:6655:3: warning: excess elements in struct initializer 6655 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:6655:3: note: (near initialization for ‘__pyx_tp_as_buffer_ip’) ./dnet.c:6656:3: warning: excess elements in struct initializer 6656 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:6656:3: note: (near initialization for ‘__pyx_tp_as_buffer_ip’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_addr’: ./dnet.c:6709:32: warning: unused variable ‘p’ [-Wunused-variable] 6709 | struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_addr’: ./dnet.c:6714:32: warning: unused variable ‘p’ [-Wunused-variable] 6714 | struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_addr’: ./dnet.c:6720:32: warning: unused variable ‘p’ [-Wunused-variable] 6720 | struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o; | ^ ./dnet.c:6719:7: warning: unused variable ‘e’ [-Wunused-variable] 6719 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_addr’: ./dnet.c:6725:32: warning: unused variable ‘p’ [-Wunused-variable] 6725 | struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o; | ^ ./dnet.c: At top level: ./dnet.c:6840:3: warning: initialization of ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} from incompatible pointer type ‘PyObject * (*)(PyObject *)’ {aka ‘struct _object * (*)(struct _object *)’} [-Wincompatible-pointer-types] 6840 | __pyx_f_4dnet_4addr___long__, /*nb_long*/ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./dnet.c:6840:3: note: (near initialization for ‘__pyx_tp_as_number_addr.nb_inplace_add’) ./dnet.c:6857:3: warning: excess elements in struct initializer 6857 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:6857:3: note: (near initialization for ‘__pyx_tp_as_number_addr’) ./dnet.c:6858:3: warning: excess elements in struct initializer 6858 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:6858:3: note: (near initialization for ‘__pyx_tp_as_number_addr’) ./dnet.c:6883:3: warning: excess elements in struct initializer 6883 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:6883:3: note: (near initialization for ‘__pyx_tp_as_buffer_addr’) ./dnet.c:6884:3: warning: excess elements in struct initializer 6884 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:6884:3: note: (near initialization for ‘__pyx_tp_as_buffer_addr’) ./dnet.c:6896:3: warning: initialization of ‘PyAsyncMethods *’ from incompatible pointer type ‘int (*)(PyObject *, PyObject *)’ {aka ‘int (*)(struct _object *, struct _object *)’} [-Wincompatible-pointer-types] 6896 | __pyx_f_4dnet_4addr___cmp__, /*tp_compare*/ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ./dnet.c:6896:3: note: (near initialization for ‘__pyx_type_4dnet_addr.tp_as_async’) ./dnet.c: In function ‘__pyx_tp_new_4dnet___addr_ip4_iter’: ./dnet.c:6937:43: warning: unused variable ‘p’ [-Wunused-variable] 6937 | struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet___addr_ip4_iter’: ./dnet.c:6942:43: warning: unused variable ‘p’ [-Wunused-variable] 6942 | struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet___addr_ip4_iter’: ./dnet.c:6948:43: warning: unused variable ‘p’ [-Wunused-variable] 6948 | struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o; | ^ ./dnet.c:6947:7: warning: unused variable ‘e’ [-Wunused-variable] 6947 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet___addr_ip4_iter’: ./dnet.c:6953:43: warning: unused variable ‘p’ [-Wunused-variable] 6953 | struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o; | ^ ./dnet.c: At top level: ./dnet.c:6998:3: warning: excess elements in struct initializer 6998 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:6998:3: note: (near initialization for ‘__pyx_tp_as_number___addr_ip4_iter’) ./dnet.c:6999:3: warning: excess elements in struct initializer 6999 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:6999:3: note: (near initialization for ‘__pyx_tp_as_number___addr_ip4_iter’) ./dnet.c:7024:3: warning: excess elements in struct initializer 7024 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7024:3: note: (near initialization for ‘__pyx_tp_as_buffer___addr_ip4_iter’) ./dnet.c:7025:3: warning: excess elements in struct initializer 7025 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7025:3: note: (near initialization for ‘__pyx_tp_as_buffer___addr_ip4_iter’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_arp’: ./dnet.c:7078:31: warning: unused variable ‘p’ [-Wunused-variable] 7078 | struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_arp’: ./dnet.c:7083:31: warning: unused variable ‘p’ [-Wunused-variable] 7083 | struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_arp’: ./dnet.c:7098:31: warning: unused variable ‘p’ [-Wunused-variable] 7098 | struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o; | ^ ./dnet.c:7097:7: warning: unused variable ‘e’ [-Wunused-variable] 7097 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_arp’: ./dnet.c:7103:31: warning: unused variable ‘p’ [-Wunused-variable] 7103 | struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o; | ^ ./dnet.c: At top level: ./dnet.c:7152:3: warning: excess elements in struct initializer 7152 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7152:3: note: (near initialization for ‘__pyx_tp_as_number_arp’) ./dnet.c:7153:3: warning: excess elements in struct initializer 7153 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7153:3: note: (near initialization for ‘__pyx_tp_as_number_arp’) ./dnet.c:7178:3: warning: excess elements in struct initializer 7178 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7178:3: note: (near initialization for ‘__pyx_tp_as_buffer_arp’) ./dnet.c:7179:3: warning: excess elements in struct initializer 7179 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7179:3: note: (near initialization for ‘__pyx_tp_as_buffer_arp’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_intf’: ./dnet.c:7232:32: warning: unused variable ‘p’ [-Wunused-variable] 7232 | struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_intf’: ./dnet.c:7237:32: warning: unused variable ‘p’ [-Wunused-variable] 7237 | struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_intf’: ./dnet.c:7252:32: warning: unused variable ‘p’ [-Wunused-variable] 7252 | struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o; | ^ ./dnet.c:7251:7: warning: unused variable ‘e’ [-Wunused-variable] 7251 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_intf’: ./dnet.c:7257:32: warning: unused variable ‘p’ [-Wunused-variable] 7257 | struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o; | ^ ./dnet.c: At top level: ./dnet.c:7307:3: warning: excess elements in struct initializer 7307 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7307:3: note: (near initialization for ‘__pyx_tp_as_number_intf’) ./dnet.c:7308:3: warning: excess elements in struct initializer 7308 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7308:3: note: (near initialization for ‘__pyx_tp_as_number_intf’) ./dnet.c:7333:3: warning: excess elements in struct initializer 7333 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7333:3: note: (near initialization for ‘__pyx_tp_as_buffer_intf’) ./dnet.c:7334:3: warning: excess elements in struct initializer 7334 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7334:3: note: (near initialization for ‘__pyx_tp_as_buffer_intf’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_route’: ./dnet.c:7387:33: warning: unused variable ‘p’ [-Wunused-variable] 7387 | struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_route’: ./dnet.c:7392:33: warning: unused variable ‘p’ [-Wunused-variable] 7392 | struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_route’: ./dnet.c:7407:33: warning: unused variable ‘p’ [-Wunused-variable] 7407 | struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o; | ^ ./dnet.c:7406:7: warning: unused variable ‘e’ [-Wunused-variable] 7406 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_route’: ./dnet.c:7412:33: warning: unused variable ‘p’ [-Wunused-variable] 7412 | struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o; | ^ ./dnet.c: At top level: ./dnet.c:7461:3: warning: excess elements in struct initializer 7461 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7461:3: note: (near initialization for ‘__pyx_tp_as_number_route’) ./dnet.c:7462:3: warning: excess elements in struct initializer 7462 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7462:3: note: (near initialization for ‘__pyx_tp_as_number_route’) ./dnet.c:7487:3: warning: excess elements in struct initializer 7487 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7487:3: note: (near initialization for ‘__pyx_tp_as_buffer_route’) ./dnet.c:7488:3: warning: excess elements in struct initializer 7488 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7488:3: note: (near initialization for ‘__pyx_tp_as_buffer_route’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_fw’: ./dnet.c:7541:30: warning: unused variable ‘p’ [-Wunused-variable] 7541 | struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_fw’: ./dnet.c:7546:30: warning: unused variable ‘p’ [-Wunused-variable] 7546 | struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_fw’: ./dnet.c:7561:30: warning: unused variable ‘p’ [-Wunused-variable] 7561 | struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o; | ^ ./dnet.c:7560:7: warning: unused variable ‘e’ [-Wunused-variable] 7560 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_fw’: ./dnet.c:7566:30: warning: unused variable ‘p’ [-Wunused-variable] 7566 | struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o; | ^ ./dnet.c: At top level: ./dnet.c:7614:3: warning: excess elements in struct initializer 7614 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7614:3: note: (near initialization for ‘__pyx_tp_as_number_fw’) ./dnet.c:7615:3: warning: excess elements in struct initializer 7615 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7615:3: note: (near initialization for ‘__pyx_tp_as_number_fw’) ./dnet.c:7640:3: warning: excess elements in struct initializer 7640 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7640:3: note: (near initialization for ‘__pyx_tp_as_buffer_fw’) ./dnet.c:7641:3: warning: excess elements in struct initializer 7641 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7641:3: note: (near initialization for ‘__pyx_tp_as_buffer_fw’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_rand’: ./dnet.c:7694:32: warning: unused variable ‘p’ [-Wunused-variable] 7694 | struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_rand’: ./dnet.c:7699:32: warning: unused variable ‘p’ [-Wunused-variable] 7699 | struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_rand’: ./dnet.c:7714:32: warning: unused variable ‘p’ [-Wunused-variable] 7714 | struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o; | ^ ./dnet.c:7713:7: warning: unused variable ‘e’ [-Wunused-variable] 7713 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_rand’: ./dnet.c:7719:32: warning: unused variable ‘p’ [-Wunused-variable] 7719 | struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o; | ^ ./dnet.c: At top level: ./dnet.c:7771:3: warning: excess elements in struct initializer 7771 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7771:3: note: (near initialization for ‘__pyx_tp_as_number_rand’) ./dnet.c:7772:3: warning: excess elements in struct initializer 7772 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7772:3: note: (near initialization for ‘__pyx_tp_as_number_rand’) ./dnet.c:7797:3: warning: excess elements in struct initializer 7797 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7797:3: note: (near initialization for ‘__pyx_tp_as_buffer_rand’) ./dnet.c:7798:3: warning: excess elements in struct initializer 7798 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7798:3: note: (near initialization for ‘__pyx_tp_as_buffer_rand’) ./dnet.c: In function ‘__pyx_tp_new_4dnet___rand_xrange’: ./dnet.c:7851:41: warning: unused variable ‘p’ [-Wunused-variable] 7851 | struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet___rand_xrange’: ./dnet.c:7856:41: warning: unused variable ‘p’ [-Wunused-variable] 7856 | struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet___rand_xrange’: ./dnet.c:7862:41: warning: unused variable ‘p’ [-Wunused-variable] 7862 | struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o; | ^ ./dnet.c:7861:7: warning: unused variable ‘e’ [-Wunused-variable] 7861 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet___rand_xrange’: ./dnet.c:7867:41: warning: unused variable ‘p’ [-Wunused-variable] 7867 | struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o; | ^ ./dnet.c: At top level: ./dnet.c:7912:3: warning: excess elements in struct initializer 7912 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:7912:3: note: (near initialization for ‘__pyx_tp_as_number___rand_xrange’) ./dnet.c:7913:3: warning: excess elements in struct initializer 7913 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:7913:3: note: (near initialization for ‘__pyx_tp_as_number___rand_xrange’) ./dnet.c:7938:3: warning: excess elements in struct initializer 7938 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:7938:3: note: (near initialization for ‘__pyx_tp_as_buffer___rand_xrange’) ./dnet.c:7939:3: warning: excess elements in struct initializer 7939 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:7939:3: note: (near initialization for ‘__pyx_tp_as_buffer___rand_xrange’) ./dnet.c: In function ‘__pyx_tp_new_4dnet_tun’: ./dnet.c:7992:31: warning: unused variable ‘p’ [-Wunused-variable] 7992 | struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o; | ^ ./dnet.c: In function ‘__pyx_tp_dealloc_4dnet_tun’: ./dnet.c:7997:31: warning: unused variable ‘p’ [-Wunused-variable] 7997 | struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o; | ^ ./dnet.c: In function ‘__pyx_tp_traverse_4dnet_tun’: ./dnet.c:8012:31: warning: unused variable ‘p’ [-Wunused-variable] 8012 | struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o; | ^ ./dnet.c:8011:7: warning: unused variable ‘e’ [-Wunused-variable] 8011 | int e; | ^ ./dnet.c: In function ‘__pyx_tp_clear_4dnet_tun’: ./dnet.c:8017:31: warning: unused variable ‘p’ [-Wunused-variable] 8017 | struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o; | ^ ./dnet.c: At top level: ./dnet.c:8080:3: warning: excess elements in struct initializer 8080 | 0, /*nb_inplace_floor_divide*/ | ^ ./dnet.c:8080:3: note: (near initialization for ‘__pyx_tp_as_number_tun’) ./dnet.c:8081:3: warning: excess elements in struct initializer 8081 | 0, /*nb_inplace_true_divide*/ | ^ ./dnet.c:8081:3: note: (near initialization for ‘__pyx_tp_as_number_tun’) ./dnet.c:8106:3: warning: excess elements in struct initializer 8106 | 0, /*bf_getsegcount*/ | ^ ./dnet.c:8106:3: note: (near initialization for ‘__pyx_tp_as_buffer_tun’) ./dnet.c:8107:3: warning: excess elements in struct initializer 8107 | 0, /*bf_getcharbuffer*/ | ^ ./dnet.c:8107:3: note: (near initialization for ‘__pyx_tp_as_buffer_tun’) ./dnet.c: In function ‘__Pyx_EndUnpack’: ./dnet.c:9276:7: warning: suggest parentheses around assignment used as truth value [-Wparentheses] 9276 | if (item = PySequence_GetItem(seq, i)) { | ^~~~ ./dnet.c: At top level: ./dnet.c:33:12: warning: ‘__Pyx_PrintItem’ declared ‘static’ but never defined [-Wunused-function] 33 | static int __Pyx_PrintItem(PyObject *); /*proto*/ | ^~~~~~~~~~~~~~~ ./dnet.c:34:12: warning: ‘__Pyx_PrintNewline’ declared ‘static’ but never defined [-Wunused-function] 34 | static int __Pyx_PrintNewline(void); /*proto*/ | ^~~~~~~~~~~~~~~~~~ ./dnet.c:36:13: warning: ‘__Pyx_ReRaise’ declared ‘static’ but never defined [-Wunused-function] 36 | static void __Pyx_ReRaise(void); /*proto*/ | ^~~~~~~~~~~~~ ./dnet.c:37:18: warning: ‘__Pyx_Import’ declared ‘static’ but never defined [-Wunused-function] 37 | static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/ | ^~~~~~~~~~~~ ./dnet.c:38:18: warning: ‘__Pyx_GetExcValue’ declared ‘static’ but never defined [-Wunused-function] 38 | static PyObject *__Pyx_GetExcValue(void); /*proto*/ | ^~~~~~~~~~~~~~~~~ ./dnet.c:41:12: warning: ‘__Pyx_GetStarArgs’ declared ‘static’ but never defined [-Wunused-function] 41 | static int __Pyx_GetStarArgs(PyObject **args, PyObject **kwds, char *kwd_list[], Py_ssize_t nargs, PyObject **args2, PyObject **kwds2); /*proto*/ | ^~~~~~~~~~~~~~~~~ ./dnet.c:42:13: warning: ‘__Pyx_WriteUnraisable’ declared ‘static’ but never defined [-Wunused-function] 42 | static void __Pyx_WriteUnraisable(char *name); /*proto*/ | ^~~~~~~~~~~~~~~~~~~~~ ./dnet.c:44:22: warning: ‘__Pyx_ImportType’ declared ‘static’ but never defined [-Wunused-function] 44 | static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size); /*proto*/ | ^~~~~~~~~~~~~~~~ ./dnet.c:45:12: warning: ‘__Pyx_SetVtable’ declared ‘static’ but never defined [-Wunused-function] 45 | static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ | ^~~~~~~~~~~~~~~ ./dnet.c:46:12: warning: ‘__Pyx_GetVtable’ declared ‘static’ but never defined [-Wunused-function] 46 | static int __Pyx_GetVtable(PyObject *dict, void *vtabptr); /*proto*/ | ^~~~~~~~~~~~~~~ ./dnet.c:47:18: warning: ‘__Pyx_CreateClass’ declared ‘static’ but never defined [-Wunused-function] 47 | static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, char *modname); /*proto*/ | ^~~~~~~~~~~~~~~~~ ./dnet.c:50:12: warning: ‘__Pyx_InitCApi’ declared ‘static’ but never defined [-Wunused-function] 50 | static int __Pyx_InitCApi(PyObject *module); /*proto*/ | ^~~~~~~~~~~~~~ ./dnet.c:51:12: warning: ‘__Pyx_ImportModuleCApi’ declared ‘static’ but never defined [-Wunused-function] 51 | static int __Pyx_ImportModuleCApi(__Pyx_CApiTabEntry *t); /*proto*/ | ^~~~~~~~~~~~~~~~~~~~~~ ../include/config.h:298:5: warning: type of ‘strlcpy’ does not match original declaration [-Wlto-type-mismatch] 298 | int strlcpy(char *, const char *, int); | ^ ../src/strlcpy.c:43:1: note: return value type mismatch 43 | strlcpy(dst, src, siz) | ^ ../src/strlcpy.c:43:1: note: type ‘size_t’ should match type ‘int’ ../src/strlcpy.c:43:1: note: ‘strlcpy’ was previously declared here ../src/strlcpy.c:43:1: note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used ```
kloczek commented 2 years ago

Will try to help you with autoconf warnings so you can skipp that part 😄

kloczek commented 2 years ago

BTW looks like version in configure.ac has not been updated 😃 https://github.com/ofalk/libdnet/blob/5906d359a179f5d484eb2f77b53bd4b6bf8b0566/configure.ac#L9

ofalk commented 2 years ago

Oh crap. monday--

If you could look at the autoconf (beast), that would be awesome!

When sending an MR, please against devel branch. And if I find some time, I'll also look into the issue (again).

kloczek commented 2 years ago

I'll try to make few MRs because I see it is much more to clean in ac/am/lt stuff. With few MRs you will have better visibilito what is the propose of exact changes and aprove/reject/discuss in one chunk 😄 I'm not sure but probably it would be good to make next release with corrected version and than we will continue.

ofalk commented 2 years ago

Perfect!

I've now added 1.16.1 release: https://github.com/ofalk/libdnet/releases/tag/libdnet-1.16.1

ofalk commented 1 year ago

@kloczek do you think you have time to look into this again?

ofalk commented 11 months ago

Latest run against the default branch:

# rpmbuild -ba --with check libdnet.spec --quiet 2>&1 | grep -- -W | sed 's/.*\[//; s/\]//' | sort | uniq -c | sort -nr
     34 -Wpointer-sign
      8 -Wincompatible-pointer-types
      2 -Wsizeof-pointer-memaccess
      1 -Wunused-variable
      1 -Wunused-result
      1 -Wunused-function
      1 -Wstringop-overflow=
      1 -Wmaybe-uninitialized
      1 -Wimplicit-function-declaration
      1 -Warray-bounds

Since this issue was about LTO, I consider this closed. Thanks again for reporting it @kloczek !

kloczek commented 11 months ago

Thx. At least -Wstringop-overflow= would be good to fix as well 😋

kloczek commented 11 months ago

And -Wunused-variable, -Wunused-function are trivial as well 😄

ofalk commented 11 months ago

Agree with you @kloczek - it's not like I don't want to address these as well, but not as part of this issue. :-)

kloczek commented 11 months ago

Thx for the clarification👍 😄