Changeset 12580


Ignore:
Timestamp:
07/30/09 15:32:54 (4 years ago)
Author:
chris
Message:

rework of driver initialisation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/router/services/networking/madwifi.c

    r12525 r12580  
    6767static void setdistance(char *device, int distance, int chanbw) 
    6868{ 
    69  
    70         if (distance >= 0) { 
    71                 int slottime = (distance / 300) + ((distance % 300) ? 1 : 0); 
    72                 int acktimeout = slottime * 2 + 3; 
    73                 int ctstimeout = slottime * 2 + 3; 
    74  
    75                 // printf("Setting distance on interface %s to %i meters\n", device, 
    76                 // distance); 
    77                 setsysctrl(device, "slottime", slottime); 
    78                 setsysctrl(device, "acktimeout", acktimeout); 
    79                 setsysctrl(device, "ctstimeout", ctstimeout); 
    80         } 
     69        if (distance >= 0) 
     70                setsysctrl(device, "distance", distance); 
    8171} 
    8272 
     
    173163        fclose(in); 
    174164        return max; 
     165} 
     166 
     167static void 
     168setupKey(char *prefix) 
     169{ 
     170        char akm[16]; 
     171 
     172        sprintf(akm, "%s_akm", prefix); 
     173        if (nvram_match(akm, "wep")) { 
     174                char key[16]; 
     175                int cnt = 1; 
     176                int i; 
     177                char bul[8]; 
     178                char *authmode = nvram_nget("%s_authmode", prefix); 
     179                for (i = 1; i < 5; i++) { 
     180                        char *athkey = nvram_nget("%s_key%d", prefix, i); 
     181 
     182                        if (athkey != NULL && strlen(athkey) > 0) { 
     183                                sysprintf("iwconfig %s key [%d] %s", prefix, cnt++, athkey);    // setup wep 
     184                        } 
     185                } 
     186                sysprintf("iwconfig %s key [%s]", prefix, 
     187                          nvram_nget("%s_key", prefix)); 
     188                if (!strcmp(authmode, "shared")) 
     189                        sysprintf("iwpriv %s authmode 2", prefix); 
     190                else 
     191                        sysprintf("iwpriv %s authmode 1", prefix); 
     192        } 
     193 
    175194} 
    176195 
     
    203222        sprintf(bridged, "%s_bridged", prefix); 
    204223        if (nvram_match(akm, "wep")) { 
    205                 char key[16]; 
    206                 int cnt = 1; 
    207                 int i; 
    208                 char bul[8]; 
    209                 char *authmode = nvram_nget("%s_authmode", prefix); 
    210                 for (i = 1; i < 5; i++) { 
    211                         char *athkey = nvram_nget("%s_key%d", prefix, i); 
    212  
    213                         if (athkey != NULL && strlen(athkey) > 0) { 
    214                                 sysprintf("iwconfig %s key [%d] %s", prefix, cnt++, athkey);    // setup wep 
    215                         } 
    216                 } 
    217                 sysprintf("iwconfig %s key [%s]", prefix, 
    218                           nvram_nget("%s_key", prefix)); 
    219                 if (!strcmp(authmode, "shared")) 
    220                         sysprintf("iwpriv %s authmode 2", prefix); 
    221                 else 
    222                         sysprintf("iwpriv %s authmode 1", prefix); 
     224                /* ignore */ 
    223225        } else if (nvram_match(akm, "psk") || 
    224226                   nvram_match(akm, "psk2") || nvram_match(akm, "psk psk2")) { 
     
    511513        // wep key support 
    512514        if (nvram_match(akm, "wep")) { 
    513                 int cnt = 1; 
    514                 int i; 
    515                 char bul[8]; 
    516                 char *authmode = nvram_nget("%s_authmode", prefix); 
    517  
    518                 for (i = 1; i < 5; i++) { 
    519                         char *athkey = nvram_nget("%s_key%d", prefix, i); 
    520  
    521                         if (athkey != NULL && strlen(athkey) > 0) { 
    522                                 sprintf(bul, "[%d]", cnt++); 
    523                                 sysprintf("iwconfig %s key %s %s", prefix, bul, 
    524                                           athkey); 
    525                         } 
    526                 } 
    527                 sprintf(bul, "[%s]", nvram_nget("%s_key", prefix)); 
    528                 sysprintf("iwconfig %s key %s", prefix, bul); 
    529  
    530                 if (!strcmp(authmode, "shared")) 
    531                         sysprintf("iwpriv %s authmode 2", prefix); 
    532                 else 
    533                         sysprintf("iwpriv %s authmode 1", prefix); 
     515                /* ignore */ 
    534516        } else if (nvram_match(akm, "psk") || 
    535517                   nvram_match(akm, "psk2") || 
     
    799781#endif 
    800782                { 
    801                         sysprintf("iwpriv %s turbo 0", use); 
    802783                        sysprintf("iwpriv %s xr 0", use); 
    803784                        if (!strcmp(netmode, "mixed")) 
     
    831812                                sysprintf("iwpriv %s mode 5", use); 
    832813                        } 
    833                         sysprintf("iwpriv %s turbo 1", use); 
    834814                } 
    835815        } else { 
     
    901881        char var[32]; 
    902882 
    903         sysprintf("ifconfig %s down", iface); 
    904883        sysprintf("iwpriv %s maccmd 3", iface); 
    905884 
     
    14891468        // netconfig 
    14901469 
     1470        /* 
     1471         * set_rate (dev); 
     1472         */ 
    14911473        set_rate(dev, dev); 
    14921474 
    14931475        set_netmode(wif, dev, dev); 
     1476 
     1477        setupKey(dev); 
     1478        if (vifs != NULL && strlen(vifs) > 0) { 
     1479                foreach(var, vifs, next) { 
     1480                        setMacFilter(var); 
     1481                        setupKey(var); 
     1482                } 
     1483        } 
     1484 
     1485 
     1486        apm = nvram_default_get(wl, "ap"); 
     1487        if (strcmp(apm, "sta") && strcmp(apm, "wdssta") && strcmp(apm, "wet")) { 
     1488                cprintf("set channel\n"); 
     1489                char *ch = nvram_default_get(channel, "0"); 
     1490 
     1491                if (strcmp(ch, "0") == 0) { 
     1492                        sysprintf("iwconfig %s channel 0", dev); 
     1493                } else { 
     1494                        sysprintf("iwconfig %s freq %sM", dev, ch); 
     1495                } 
     1496        } 
    14941497 
    14951498        if (strcmp(apm, "sta")) { 
     
    15191522 
    15201523        } 
     1524 
     1525        // vif netconfig 
     1526        vifs = nvram_safe_get(wifivifs); 
     1527        if (vifs != NULL && strlen(vifs) > 0) { 
     1528                foreach(var, vifs, next) { 
     1529                        sprintf(mode, "%s_mode", var); 
     1530                        char *m2 = nvram_default_get(mode, "ap"); 
     1531 
     1532                        if (strcmp(m2, "sta")) { 
     1533                                char bridged[32]; 
     1534 
     1535                                sprintf(bridged, "%s_bridged", var); 
     1536                                if (nvram_default_match(bridged, "1", "1")) { 
     1537                                        sysprintf("ifconfig %s 0.0.0.0 up", 
     1538                                                  var); 
     1539                                        br_add_interface(getBridge(var), var); 
     1540                                } else { 
     1541                                        char ip[32]; 
     1542                                        char mask[32]; 
     1543 
     1544                                        sprintf(ip, "%s_ipaddr", var); 
     1545                                        sprintf(mask, "%s_netmask", var); 
     1546                                        sysprintf("ifconfig %s mtu %s", var, 
     1547                                                  getMTU(var)); 
     1548                                        sysprintf 
     1549                                            ("ifconfig %s %s netmask %s up", 
     1550                                             var, nvram_safe_get(ip), 
     1551                                             nvram_safe_get(mask)); 
     1552                                } 
     1553                        } 
     1554                } 
     1555        } 
     1556 
     1557        // setup encryption 
    15211558        if (strcmp(apm, "sta") && strcmp(apm, "wdssta") && strcmp(apm, "wet")) 
    15221559                setupHostAP(dev, 0); 
    15231560        else 
    15241561                setupSupplicant(dev, NULL); 
    1525  
    1526         // setup encryption 
    15271562 
    15281563        vifs = nvram_safe_get(wifivifs); 
     
    15371572                        setupSupplicant(var, NULL); 
    15381573                } 
    1539         /* 
    1540          * set_rate (dev); 
    1541          */ 
    1542  
    1543         // vif netconfig 
    1544         vifs = nvram_safe_get(wifivifs); 
    1545         if (vifs != NULL && strlen(vifs) > 0) { 
    1546                 foreach(var, vifs, next) { 
    1547                         setMacFilter(var); 
    1548  
    1549                         sprintf(mode, "%s_mode", var); 
    1550                         char *m2 = nvram_default_get(mode, "ap"); 
    1551  
    1552                         if (strcmp(m2, "sta")) { 
    1553                                 char bridged[32]; 
    1554  
    1555                                 sprintf(bridged, "%s_bridged", var); 
    1556                                 if (nvram_default_match(bridged, "1", "1")) { 
    1557                                         sysprintf("ifconfig %s 0.0.0.0 up", 
    1558                                                   var); 
    1559                                         br_add_interface(getBridge(var), var); 
    1560                                         if (!strcmp(apm, "sta") 
    1561                                             || !strcmp(apm, "wdssta") 
    1562                                             || !strcmp(apm, "wet")) 
    1563                                                 sysprintf 
    1564                                                     ("ifconfig %s 0.0.0.0 down", 
    1565                                                      var); 
    1566                                         else { 
    1567                                                 sysprintf 
    1568                                                     ("ifconfig %s 0.0.0.0 down", 
    1569                                                      var); 
    1570                                                 sleep(1); 
    1571                                                 sysprintf 
    1572                                                     ("ifconfig %s 0.0.0.0 up", 
    1573                                                      var); 
    1574                                         } 
    1575                                 } else { 
    1576                                         char ip[32]; 
    1577                                         char mask[32]; 
    1578  
    1579                                         sprintf(ip, "%s_ipaddr", var); 
    1580                                         sprintf(mask, "%s_netmask", var); 
    1581                                         sysprintf("ifconfig %s mtu %s", var, 
    1582                                                   getMTU(var)); 
    1583                                         sysprintf 
    1584                                             ("ifconfig %s %s netmask %s up", 
    1585                                              var, nvram_safe_get(ip), 
    1586                                              nvram_safe_get(mask)); 
    1587                                         if (!strcmp(apm, "sta") 
    1588                                             || !strcmp(apm, "wdssta") 
    1589                                             || !strcmp(apm, "wet")) 
    1590                                                 sysprintf("ifconfig %s down", 
    1591                                                           var); 
    1592                                         else { 
    1593                                                 sysprintf("ifconfig %s down", 
    1594                                                           var); 
    1595                                                 sleep(1); 
    1596                                                 sysprintf 
    1597                                                     ("ifconfig %s %s netmask %s up", 
    1598                                                      var, nvram_safe_get(ip), 
    1599                                                      nvram_safe_get(mask)); 
    1600                                         } 
    1601                                 } 
    1602                         } 
    1603                 } 
    1604         } 
    1605  
    1606         apm = nvram_default_get(wl, "ap"); 
    1607         if (strcmp(apm, "sta") && strcmp(apm, "wdssta") && strcmp(apm, "wet")) { 
    1608                 cprintf("set channel\n"); 
    1609                 char *ch = nvram_default_get(channel, "0"); 
    1610  
    1611                 if (strcmp(ch, "0") == 0) { 
    1612                         sysprintf("iwconfig %s channel 0", dev); 
    1613                 } else { 
    1614                         char freq[64]; 
    1615  
    1616                         sysprintf("iwconfig %s freq %sM", dev, ch); 
    1617                         sysprintf("ifconfig %s down", dev); 
    1618                         sleep(1); 
    1619                         sysprintf("ifconfig %s up", dev); 
    1620                 } 
    1621         } 
     1574 
     1575 
    16221576        for (s = 1; s <= 10; s++) { 
    16231577                char wdsvarname[32] = { 0 }; 
     
    16631617        } 
    16641618 
    1665         sysprintf("iwconfig %s txpower %ddBm", dev, newpower); 
    1666  
    16671619        setMacFilter(dev); 
    16681620} 
     
    16991651                                                br_add_interface(getBridge(var), 
    17001652                                                                 var); 
    1701                                                 eval("ifconfig", var, "0.0.0.0", 
    1702                                                      "up"); 
    17031653                                        } else { 
    17041654                                                char ip[32]; 
Note: See TracChangeset for help on using the changeset viewer.