Ticket #332: patch_revision1239.patch

File patch_revision1239.patch, 3.3 KB (added by bigup, 15 years ago)

patch for wifidog

  • src/firewall.c

     
    7272/* from commandline.c */ 
    7373extern pid_t restart_orig_pid; 
    7474 
    75 int icmp_fd = 0; 
    7675 
     76 
    7777/** 
    7878 * Allow a client access through the firewall by adding a rule in the firewall to MARK the user's packets with the proper 
    7979 * rule by providing his IP and MAC address 
  • src/firewall.h

     
    2727#ifndef _FIREWALL_H_ 
    2828#define _FIREWALL_H_ 
    2929 
     30int icmp_fd; 
     31 
    3032/** Used by fw_iptables.c */ 
    3133typedef enum _t_fw_marks { 
    3234    FW_MARK_PROBATION = 1, /**< @brief The client is in probation period and must be authenticated  
  • src/util.c

     
    173173    in.s_addr = ip; 
    174174 
    175175    ip_str = (char *)inet_ntoa(in); 
     176    close(sockd); 
    176177    return safe_strdup(ip_str); 
    177178#else 
    178179    return safe_strdup("0.0.0.0"); 
  • src/wdctl_thread.c

     
    7070void 
    7171thread_wdctl(void *arg) 
    7272{ 
    73         int     sock, 
    74                 fd; 
     73        int     fd; 
    7574        char    *sock_name; 
    7675        struct  sockaddr_un     sa_un; 
    7776        int result; 
    7877        pthread_t       tid; 
    79     socklen_t len; 
     78        socklen_t len; 
    8079 
    8180        debug(LOG_DEBUG, "Starting wdctl."); 
    8281 
     
    9291         
    9392 
    9493        debug(LOG_DEBUG, "Creating socket"); 
    95         sock = socket(PF_UNIX, SOCK_STREAM, 0); 
     94        wdctl_socket_server = socket(PF_UNIX, SOCK_STREAM, 0); 
    9695 
    97         debug(LOG_DEBUG, "Got server socket %d", sock); 
     96        debug(LOG_DEBUG, "Got server socket %d", wdctl_socket_server); 
    9897 
    9998        /* If it exists, delete... Not the cleanest way to deal. */ 
    10099        unlink(sock_name); 
     
    108107                        strlen(sock_name)); 
    109108         
    110109        /* Which to use, AF_UNIX, PF_UNIX, AF_LOCAL, PF_LOCAL? */ 
    111         if (bind(sock, (struct sockaddr *)&sa_un, strlen(sock_name)  
     110        if (bind(wdctl_socket_server, (struct sockaddr *)&sa_un, strlen(sock_name)  
    112111                                + sizeof(sa_un.sun_family))) { 
    113112                debug(LOG_ERR, "Could not bind control socket: %s", 
    114113                                strerror(errno)); 
    115114                pthread_exit(NULL); 
    116115        } 
    117116 
    118         if (listen(sock, 5)) { 
     117        if (listen(wdctl_socket_server, 5)) { 
    119118                debug(LOG_ERR, "Could not listen on control socket: %s", 
    120119                                strerror(errno)); 
    121120                pthread_exit(NULL); 
     
    124123        while (1) { 
    125124                len = sizeof(sa_un);  
    126125                memset(&sa_un, 0, len); 
    127                 if ((fd = accept(sock, (struct sockaddr *)&sa_un, &len)) == -1){ 
     126                if ((fd = accept(wdctl_socket_server, (struct sockaddr *)&sa_un, &len)) == -1){ 
    128127                        debug(LOG_ERR, "Accept failed on control socket: %s", 
    129128                                        strerror(errno)); 
    130129                } else { 
     
    342341        } 
    343342        else { 
    344343                /* Child */ 
     344                close(wdctl_socket_server); 
     345                close(icmp_fd); 
    345346                close(sock); 
    346347                shutdown(afd, 2); 
    347348                close(afd); 
  • src/wdctl_thread.h

     
    2929 
    3030#define DEFAULT_WDCTL_SOCK      "/tmp/wdctl.sock" 
    3131 
     32int wdctl_socket_server; 
     33 
    3234/** @brief Listen for WiFiDog control messages on a unix domain socket */ 
    3335void thread_wdctl(void *arg); 
    3436