@@ -72,11 +72,6 @@ sockaddr_to_nvlist(const struct sockaddr *sa)
7272 return (nvl );
7373}
7474
75- #if defined(__GNUC__ ) || defined(__clang__ )
76- #pragma GCC diagnostic push
77- #pragma GCC diagnostic ignored "-Wconversion"
78- #endif
79-
8075static bool
8176nvlist_to_sockaddr (const nvlist_t * nvl , struct sockaddr_storage * ss )
8277{
@@ -93,7 +88,7 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *ss)
9388 return (false);
9489 }
9590
96- ss -> ss_family = nvlist_get_number (nvl , "af" );
91+ ss -> ss_family = ( unsigned char ) nvlist_get_number (nvl , "af" );
9792
9893 switch (ss -> ss_family )
9994 {
@@ -107,7 +102,7 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *ss)
107102 data = nvlist_get_binary (nvl , "address" , & len );
108103 ASSERT (len == sizeof (in -> sin_addr ));
109104 memcpy (& in -> sin_addr , data , sizeof (in -> sin_addr ));
110- in -> sin_port = nvlist_get_number (nvl , "port" );
105+ in -> sin_port = ( in_port_t ) nvlist_get_number (nvl , "port" );
111106 break ;
112107 }
113108
@@ -121,11 +116,11 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *ss)
121116 data = nvlist_get_binary (nvl , "address" , & len );
122117 ASSERT (len == sizeof (in6 -> sin6_addr ));
123118 memcpy (& in6 -> sin6_addr , data , sizeof (in6 -> sin6_addr ));
124- in6 -> sin6_port = nvlist_get_number (nvl , "port" );
119+ in6 -> sin6_port = ( in_port_t ) nvlist_get_number (nvl , "port" );
125120
126121 if (nvlist_exists_number (nvl , "scopeid" ))
127122 {
128- in6 -> sin6_scope_id = nvlist_get_number (nvl , "scopeid" );
123+ in6 -> sin6_scope_id = ( uint32_t ) nvlist_get_number (nvl , "scopeid" );
129124 }
130125 break ;
131126 }
@@ -614,9 +609,12 @@ dco_do_read(dco_context_t *dco)
614609 return - EINVAL ;
615610 }
616611
617- dco -> dco_message_peer_id = nvlist_get_number (nvl , "peerid" );
612+ /* dco_message_peer_id is signed int, because other parts of the
613+ * code treat "-1" as "this is a message not specific to one peer"
614+ */
615+ dco -> dco_message_peer_id = (int )nvlist_get_number (nvl , "peerid" );
618616
619- type = nvlist_get_number (nvl , "notification" );
617+ type = ( enum ovpn_notif_type ) nvlist_get_number (nvl , "notification" );
620618
621619 switch (type )
622620 {
@@ -625,7 +623,7 @@ dco_do_read(dco_context_t *dco)
625623
626624 if (nvlist_exists_number (nvl , "del_reason" ))
627625 {
628- uint32_t reason = nvlist_get_number (nvl , "del_reason" );
626+ uint32_t reason = ( uint32_t ) nvlist_get_number (nvl , "del_reason" );
629627 if (reason == OVPN_DEL_REASON_TIMEOUT )
630628 {
631629 dco -> dco_del_peer_reason = OVPN_DEL_PEER_REASON_EXPIRED ;
@@ -869,7 +867,7 @@ dco_get_peer_stats_multi(dco_context_t *dco, const bool raise_sigusr1_on_err)
869867 for (size_t i = 0 ; i < npeers ; i ++ )
870868 {
871869 const nvlist_t * peer = nvpeers [i ];
872- uint32_t peerid = nvlist_get_number (peer , "peerid" );
870+ uint32_t peerid = ( uint32_t ) nvlist_get_number (peer , "peerid" );
873871 const nvlist_t * bytes = nvlist_get_nvlist (peer , "bytes" );
874872
875873 /* we can end here in p2mp mode, or in p2p mode via
@@ -890,10 +888,6 @@ dco_get_peer_stats_multi(dco_context_t *dco, const bool raise_sigusr1_on_err)
890888 return 0 ;
891889}
892890
893- #if defined(__GNUC__ ) || defined(__clang__ )
894- #pragma GCC diagnostic pop
895- #endif
896-
897891/* get stats for a single peer
898892 * we can get here for "the peer stats" in p2p client mode, or by
899893 * being queried for a particular peer in p2mp mode, for --inactive
0 commit comments