pmlag

Poor man's link aggregation
git clone git://git.finwo.net/app/pmlag
Log | Files | Refs | LICENSE

config.c (1177B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <strings.h>
      4 
      5 #include "util/config.h"
      6 
      7 #include "config.h"
      8 
      9 struct cnf_directive * cfg_parse_bond(FILE *fd, struct cnf_directive *dir, void *user) {
     10   int i;
     11 
     12   if (dir->argc != 1) {
     13     fprintf(stderr, "`bond` directive accepts only 1 argument\n");
     14     exit(1);
     15   }
     16 
     17   printf("Defining bond: %s\n", dir->argv[0]);
     18 
     19   for(;;) {
     20     if (dir) cnf_directive_free(dir);
     21     dir = cnf_directive_read(fd);
     22     if (!dir) break; // EOF = done
     23 
     24     // Make following blocks identical in structure
     25     if(0) {}
     26 
     27     else if (!strcasecmp("interface", dir->name)) {
     28       for( i = 0 ; i < dir->argc ; i++ ) {
     29         printf("  add iface: %s\n", dir->argv[i]);
     30       }
     31     }
     32 
     33     else if (!strcasecmp("address", dir->name)) {
     34       for( i = 0 ; i < dir->argc ; i++ ) {
     35         printf("  got addr: %s\n", dir->argv[i]);
     36       }
     37     }
     38 
     39     else if (!strcasecmp("mac", dir->name)) {
     40       if (dir->argc != 1) {
     41         fprintf(stderr, "`mac` directive accepts only 1 argument\n");
     42         exit(1);
     43       }
     44       printf("  set mac: %s\n", dir->argv[0]);
     45     }
     46 
     47     else {
     48       // unknown directive
     49       return dir;
     50     }
     51 
     52   }
     53 
     54   return NULL;
     55 }