]> git.decadent.org.uk Git - ap-utils.git/blobdiff - src/bridge.c
Imported Upstream version 1.5.1~pre1
[ap-utils.git] / src / bridge.c
index 001975d37d0e34fa451fdbea961323dfb6277eb2..8cffe3309429de7fc2b940e52be262a2a15494bc 100644 (file)
@@ -45,6 +45,16 @@ extern short ap_type, ap_vendorext;
 
 void bridging()
 {
+
+char *bridge_modes[6] = {
+    _("Wireless Bridge Point to MultiPoint"),
+    _("Access Point"),
+    _("Access Point client"),
+    _("Wireless Bridge Point to Point"),
+    _("Repeater"),
+    _("unknown")
+};
+
     char sysTrapSwitch[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x03, 0x00
     };
@@ -82,15 +92,6 @@ void bridging()
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x01, 0x00
     };
 
-char *bridge_modes[6] = {
-    _("Wireless Bridge Point to MultiPoint"),
-    _("Access Point"),
-    _("Access Point client"),
-    _("Wireless Bridge Point to Point"),
-    _("Repeater"),
-    _("unknown")
-};
-
     /* These 3 are ATMEL410 SBRIDGES MIB and ATMEL12350 all MIBs specific. */
     char operForwarbBcast[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x02, 0x00
@@ -122,10 +123,10 @@ char *bridge_modes[6] = {
     char *pr_ports[2] = {
        _("Ethernet"),
        _("Wireless")
-    }, *cf_trap_ports[3] = {
-       _("Both"),
+    }, *cf_ports[3] = {
        _("Ethernet"),
-       _("Wireless (can be risky)")
+       _("Wireless (can be risky)"),
+       _("Both")
     };
     int i;
     unsigned int trap_port = 0;
@@ -266,7 +267,9 @@ char *bridge_modes[6] = {
     if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
        ap_type == ATMEL12350) {
        config_port = *(varbinds[10].value);
-       sprintf(message, "%s%s", CF_PORT, cf_trap_ports[config_port]);
+       if (config_port == 0) /* happens with ATMEL12350 EZYNET firmware only */
+           config_port = 3;
+       sprintf(message, "%s%s", CF_PORT, cf_ports[config_port - 1]);
        mvwaddstr(main_sub, 9, 0, message);
 
        fw_bcast = *(varbinds[11].value);
@@ -274,11 +277,11 @@ char *bridge_modes[6] = {
        mvwaddstr(main_sub, 10, 0, message);
 
        sb_bcast = *(varbinds[12].value);
-       sprintf(message, "%s%s", SB_BCAST, (sb_bcast == 1) ? ON : OFF);
+       sprintf(message, "%s%s", SB_BCAST, (sb_bcast == 2) ? ON : OFF);
        mvwaddstr(main_sub, 11, 0, message);
 
        sb_ucast = *(varbinds[13].value);
-       sprintf(message, "%s%s", SB_UCAST, (sb_ucast == 1) ? ON : OFF);
+       sprintf(message, "%s%s", SB_UCAST, (sb_ucast == 2) ? ON : OFF);
        mvwaddstr(main_sub, 12, 0, message);
     }
 
@@ -383,9 +386,9 @@ char *bridge_modes[6] = {
        case 'c':
            if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
                ap_type == ATMEL12350) {
-               config_port = menu_choose(9, strlen(CF_PORT), cf_trap_ports, 3);
+               config_port = menu_choose(9, strlen(CF_PORT), cf_ports, 3) + 1;
                clear_main_new(9, 10);
-               print_menusel(9, 0, CF_PORT, cf_trap_ports[config_port]);
+               print_menusel(9, 0, CF_PORT, cf_ports[config_port - 1]);
                m_config_port = 1;
             }
            continue;
@@ -405,7 +408,8 @@ char *bridge_modes[6] = {
                ap_type == ATMEL12350) {
                sb_bcast = on_off(11, strlen(SB_BCAST));
                clear_main_new(11, 12);
-               print_menusel(11, 0, SB_BCAST, (sb_bcast == 1) ? ON : OFF);
+               sb_bcast = (sb_bcast == 2) ? 1 : 2;
+               print_menusel(11, 0, SB_BCAST, (sb_bcast == 2) ? ON : OFF);
                m_sb_bcast = 1;
            }
            continue;
@@ -415,7 +419,8 @@ char *bridge_modes[6] = {
                ap_type == ATMEL12350) {
                sb_ucast = on_off(12, strlen(SB_UCAST));
                clear_main_new(12, 13);
-               print_menusel(12, 0, SB_UCAST, (sb_ucast == 1) ? ON : OFF);
+               sb_ucast = (sb_ucast == 2) ? 1 : 2;
+               print_menusel(12, 0, SB_UCAST, (sb_ucast == 2) ? ON : OFF);
                m_sb_ucast = 1;
            }
            continue;
@@ -555,10 +560,13 @@ char *bridge_modes[6] = {
            }
 
            print_help(WAIT_SET);
-           if (snmp(varbinds, i, SET) <= 0)
+           if (snmp(varbinds, i, SET) <= 0) {
                print_helperr(ERR_SET);
-           else
+           } else {
+               wbkgd(main_sub, A_NORMAL);
+               wrefresh(main_sub);
                print_help(DONE_SET);
+           }
            goto exit;
        case 'Q':
        case 'q':
@@ -572,4 +580,3 @@ char *bridge_modes[6] = {
     print_top(NULL, NULL);
     clear_main(0);
 }
-