Changeset 33

Show
Ignore:
Timestamp:
04/05/04 22:56:46 (9 years ago)
Author:
alexcv
Message:

Some clean up in list handlings

Location:
trunk/wifidog/src
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/wifidog/src/child.c

    r32 r33  
    129129{ 
    130130 
    131         if (ci->mac != NULL) { 
     131        if (ci->mac != NULL) 
    132132                free(ci->mac); 
    133         } 
    134133         
    135         if (ci->ip != NULL) { 
     134        if (ci->ip != NULL) 
    136135                free(ci->ip); 
    137         } 
    138136 
    139137        free(ci); 
  • trunk/wifidog/src/firewall.c

    r32 r33  
    3030extern s_config config; 
    3131 
    32 t_node list; 
    33 t_node *firstnode; 
    34 t_node *curnode; 
     32t_node *firstnode = NULL; 
    3533 
    3634int 
     
    220218node_init(void) 
    221219{ 
    222     firstnode = curnode = &list; 
    223     firstnode->next = NULL; 
     220    firstnode = NULL; 
    224221} 
    225222 
     
    227224node_add(char *ip, char *mac, char *token, long int counter, int active) 
    228225{ 
    229     void *ptr; 
    230  
    231     ptr = curnode; 
    232  
    233     strcpy(curnode->ip, ip); 
    234     strcpy(curnode->mac, mac); 
    235     strcpy(curnode->token, token); 
     226    t_node *curnode, 
     227           *prevnode; 
     228 
     229    prevnode = NULL; 
     230    curnode = firstnode; 
     231 
     232    while (curnode != NULL) { 
     233            prevnode = curnode; 
     234            curnode = curnode->next; 
     235    } 
     236 
     237    curnode = (t_node *)malloc(sizeof(t_node)); 
     238     
     239    if (curnode == NULL) { 
     240            debug(D_LOG_DEBUG, "Out of memory"); 
     241            exit(-1); 
     242    } 
     243 
     244    memset(curnode, 0, sizeof(t_node)); 
     245 
     246    curnode->ip = strdup(ip); 
     247    curnode->mac = strdup(mac); 
     248    curnode->token = strdup(token); 
    236249    curnode->counter = counter; 
    237250    curnode->active = active; 
     251 
     252    if (prevnode == NULL) { 
     253            firstnode = curnode; 
     254    } else { 
     255            prevnode->next = curnode; 
     256    } 
    238257     
    239  
    240     curnode->next = (t_node *)malloc(sizeof(t_node)); 
    241     curnode = curnode->next; 
    242  
    243258    debug(D_LOG_DEBUG, "Added a new node to linked list: IP: %s Token: %s", ip, token); 
    244259 
    245     return ptr; 
     260    return curnode; 
    246261} 
    247262 
     
    280295{ 
    281296 
    282         /* The ip, mac and token maybe shouldn't be fixed-length strings... */ 
     297        if (node->mac != NULL) 
     298                free(node->mac); 
     299 
     300        if (node->ip != NULL) 
     301                free(node->ip); 
     302 
     303        if (node->token != NULL) 
     304                free(node->token); 
    283305         
    284306        free(node); 
  • trunk/wifidog/src/firewall.h

    r32 r33  
    3030typedef struct { 
    3131    void *next; 
    32     char ip[16]; 
    33     char mac[18]; 
    34     char token[33]; 
     32    char *ip, 
     33         *mac, 
     34         *token; 
    3535    int active; /* boolean */ 
    3636    long int counter;