Fix compilation with -std=gnu23: missing function decls, wrong prototypes, old-style prototypes, incorrect function pointer types. https://bugs.gentoo.org/887249 https://bugs.gentoo.org/883125 --- a/daemon.c +++ b/daemon.c @@ -40,14 +40,11 @@ #endif } -void daemon_start(ignsigcld) - - int ignsigcld; - +void daemon_start(int ignsigcld) { register int childpid; #ifdef VMPS_CHECK_BSD int fd; --- a/data.c +++ b/data.c @@ -5,10 +5,12 @@ #include #include "data.h" #include "log.h" +extern void parse_error(const char *token); // from parser.c + void *macs = NULL; void *vlans = NULL; void *ports = NULL; void *vlan_groups = NULL; void *port_groups = NULL; @@ -35,13 +37,14 @@ exit(1); } void *xfree(void *p) { - if (p == NULL) return; + if (p == NULL) return NULL; vmps_log(DEBUG|SYSTEM, "FREE: %x",p); free(p); + return NULL; } /* --------------------------------------------------------------------------- */ int compare_mac(const void *pa, const void *pb) { --- a/external.c +++ b/external.c @@ -20,11 +20,11 @@ pid_t external_pid = 0; int tocli[2]; int fromcli[2]; -RETSIGTYPE sig_term() +RETSIGTYPE sig_term(int) { vmps_log(SYSTEM|INFO, "Terminating external program (%d).", external_pid); if ( kill(external_pid, SIGTERM) < 0 ) { vmps_log(SYSTEM|FATAL, "Cannot send TERM signal to external program (%s).", strerror(errno)); @@ -33,21 +33,21 @@ vmps_log(SYSTEM|INFO, "VMPSD TERMINATING."); exit(0); } -RETSIGTYPE sig_child_e() +RETSIGTYPE sig_child_e(int) { int pid; int status; pid = wait3(&status, WNOHANG, (struct rusage *) 0); vmps_log(SYSTEM|INFO, "VMPSD EXITING (external program terminating prematurely)[%d].",pid); exit(1); } -int spawn_external() +int spawn_external(void) { pid_t chpid; signal(SIGCHLD, sig_child_e); --- a/external.h +++ b/external.h @@ -6,7 +6,8 @@ extern char external_prog[256]; extern pid_t external_pid; int get_vlan_external(VQP_REQUEST *r, char *vlan_name); void do_request_external(int sock, VQP_REQUEST *r ); +int spawn_external(void); #endif --- a/vmpsd.c +++ b/vmpsd.c @@ -11,10 +11,13 @@ #include "vqp.h" #include "log.h" #include "external.h" +extern void parse_db_file(const char *fname); //from parse.c +extern void daemon_start(int ignsigcld); //from daemon.c + struct in_addr bind_address; unsigned int port_number = 1589; char db_fname[256]; int default_behaviour = 0; @@ -93,11 +96,11 @@ printf("\t 0x0004 - vqp\n"); printf("\t-p port port to listen on (1589)\n"); printf("\n"); } -RETSIGTYPE handle_sighup() { +RETSIGTYPE handle_sighup(int, siginfo_t *, void *) { if ( external_logic ) return; vmps_log(PARSER|INFO, "RECEIVED SIGHUP. Re-reading config file"); drop_data(); parse_db_file(db_fname); --- a/vqp.c +++ b/vqp.c @@ -3,10 +3,11 @@ #include #include #include "log.h" #include "data.h" +#include "snmp.h" #include "vqp.h" #include "external.h" int get_request(int sock, VQP_REQUEST *r) { --- a/vqp.h +++ b/vqp.h @@ -50,7 +50,9 @@ extern int default_behaviour; int get_request(int sock, VQP_REQUEST *r); void print_request(VQP_REQUEST *r); void do_request(int sock, VQP_REQUEST *r ); +int send_response(int sock, u_char action, VQP_REQUEST *r, char *vlan_name); +void print_action(VQP_REQUEST *r, char *str, char *vlan_name); #endif