Changeset 8815


Ignore:
Timestamp:
01/22/08 05:01:10 (5 years ago)
Author:
BrainSlayer
Message:

add masquerading rule for unbridged vifs

Location:
src/router/services
Files:
2 edited

Legend:

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

    r8800 r8815  
    5151#include <code_pattern.h> 
    5252#include <utils.h> 
     53#include <wlutils.h> 
    5354#include <cy_conf.h> 
    5455#endif /* DEVELOPE_ENV */ 
     
    633634          char *nmask = nvram_safe_get ("lan_netmask"); //assuming lan_netmask is valid 
    634635 
    635           int ip[4] = { 0, 0, 0, 0 }; 
    636  
    637           sscanf (nmask, "%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]); 
    638  
    639           int n = 8; 
    640  
    641           for (--n; n >= 0; --n)        //test all 4 bytes in one pass 
    642             { 
    643               if (ip[0] & 1 << n) 
    644                 loopmask++; 
    645               if (ip[1] & 1 << n) 
    646                 loopmask++; 
    647               if (ip[2] & 1 << n) 
    648                 loopmask++; 
    649               if (ip[3] & 1 << n) 
    650                 loopmask++; 
    651             } 
    652  
    653           save2file 
    654             ("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n", 
    655              lanface); 
    656           save2file 
    657             ("-A POSTROUTING -o %s -s %s0/%d -d %s0/%d -j MASQUERADE\n", 
    658              lanface, lan_cclass, loopmask, lan_cclass, loopmask); 
     636          loopmask = getmask(nmask); 
     637 
     638          save2file("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n",lanface); 
     639          save2file("-A POSTROUTING -o %s -s %s0/%d -d %s0/%d -j MASQUERADE\n",lanface, lan_cclass, loopmask, lan_cclass, loopmask); 
     640#ifdef HAVE_MSSID 
     641 
     642#ifdef HAVE_MADWIFI 
     643  int i; 
     644 
     645  char *next; 
     646  char dev[16]; 
     647  char var[80]; 
     648  char wifivifs[16]; 
     649  int devcount = getdevicecount (); 
     650  for (i = 0; i < devcount; i++) 
     651    { 
     652      sprintf (wifivifs, "ath%d_vifs", i); 
     653      if (nvram_nmatch("0","ath%d_bridged",i)) 
     654      { 
     655          save2file("-A POSTROUTING -o ath%d -m pkttype --pkt-type broadcast -j RETURN\n",i); 
     656          save2file("-A POSTROUTING -o ath%d -s %s/%d -d %s/%d -j MASQUERADE\n",i, nvram_nget("ath%d_ipaddr",i), getmask(nvram_nget("ath%d_netmask",i)), nvram_nget("ath%d_ipaddr",i), getmask(nvram_nget("ath%d_netmask",i))); 
     657      } 
     658      char *vifs = nvram_safe_get (wifivifs); 
     659      if (vifs != NULL) 
     660        foreach (var, vifs, next) 
     661        { 
     662        if (nvram_nmatch("0","%s_bridged",var)) 
     663          { 
     664          save2file("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n",var); 
     665          save2file("-A POSTROUTING -o %s -s %s/%d -d %s/%d -j MASQUERADE\n",var, nvram_nget("%s_ipaddr",var), getmask(nvram_nget("%s_netmask",var)), nvram_nget("%s_ipaddr",var), getmask(nvram_nget("%s_netmask",var))); 
     666          } 
     667        } 
     668    } 
     669#else 
     670  int i; 
     671  char *next; 
     672  char dev[16]; 
     673  char var[80]; 
     674  char wifivifs[16]; 
     675  int devcount = get_wl_instances (); 
     676  for (i = 0; i < devcount; i++) 
     677    { 
     678      sprintf (wifivifs, "wl%d_vifs", i); 
     679      char *iname = get_wl_instance_name (i); 
     680      if (nvram_nmatch("0","%s_bridged",iname)) 
     681      { 
     682          save2file("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n",iname); 
     683          save2file("-A POSTROUTING -o %s -s %s/%d -d %s/%d -j MASQUERADE\n",iname, nvram_nget("%s_ipaddr",iname), getmask(nvram_nget("%s_netmask",iname)), nvram_nget("%s_ipaddr",iname), getmask(nvram_nget("%s_netmask",iname))); 
     684      } 
     685      char *vifs = nvram_safe_get (wifivifs); 
     686      if (vifs != NULL) 
     687        foreach (var, vifs, next) 
     688        { 
     689        if (nvram_nmatch("0","%s_bridged",var)) 
     690          { 
     691          save2file("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n",var); 
     692          save2file("-A POSTROUTING -o %s -s %s/%d -d %s/%d -j MASQUERADE\n",var, nvram_nget("%s_ipaddr",var), getmask(nvram_nget("%s_netmask",var)), nvram_nget("%s_ipaddr",var), getmask(nvram_nget("%s_netmask",var))); 
     693          } 
     694        } 
     695    } 
     696#endif 
     697 
     698 
     699#endif 
    659700 
    660701#ifndef HAVE_MAGICBOX 
     
    17381779    { 
    17391780      sprintf (wifivifs, "ath%d_vifs", i); 
     1781      if (nvram_nmatch("0","ath%d_bridged",i)) 
     1782      { 
    17401783      save2file ("-A INPUT -i ath%d -j ACCEPT\n", i); 
    17411784      save2file ("-A FORWARD -i ath%d -j ACCEPT\n", i); 
     1785      } 
    17421786      char *vifs = nvram_safe_get (wifivifs); 
    17431787      if (vifs != NULL) 
    17441788        foreach (var, vifs, next) 
    17451789        { 
     1790        if (nvram_nmatch("0","%s_bridged",var)) 
     1791          { 
    17461792          save2file ("-A INPUT -i %s -j ACCEPT\n", var); 
    17471793          save2file ("-A FORWARD -i %s -j ACCEPT\n", var); 
     1794          } 
    17481795        } 
    17491796    } 
     
    17591806      sprintf (wifivifs, "wl%d_vifs", i); 
    17601807      char *iname = get_wl_instance_name (i); 
     1808      if (nvram_nmatch("0","%s_bridged",iname)) 
     1809      { 
    17611810      save2file ("-A INPUT -i %s -j ACCEPT\n", iname); 
    17621811      save2file ("-A FORWARD -i %s -j ACCEPT\n", iname); 
    1763  
     1812      } 
    17641813      char *vifs = nvram_safe_get (wifivifs); 
    17651814      if (vifs != NULL) 
    17661815        foreach (var, vifs, next) 
    17671816        { 
     1817        if (nvram_nmatch("0","%s_bridged",var)) 
     1818          { 
    17681819          save2file ("-A INPUT -i %s -j ACCEPT\n", var); 
    17691820          save2file ("-A FORWARD -i %s -j ACCEPT\n", var); 
     1821          } 
    17701822        } 
    17711823    } 
  • src/router/services/services/anchorfree.c

    r8808 r8815  
    11/* 
    2  * igmp.c 
    3  * 
    4  * Copyright (C) 2007 Sebastian Gottschall <gottschall@dd-wrt.com> 
     2 * AnchorFree.c 
     3 * 
     4 * Copyright (C) 2008 Sebastian Gottschall <gottschall@dd-wrt.com> 
    55 * 
    66 * This program is free software; you can redistribute it and/or 
     
    9393} 
    9494 
    95 int 
    96 getmask (char *nmask) 
    97 { 
    98  
    99   int loopmask = 0; 
    100   int ip[4] = { 0, 0, 0, 0 }; 
    101  
    102   sscanf (nmask, "%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]); 
    103  
    104   int n = 8; 
    105  
    106   for (--n; n >= 0; --n)        //test all 4 bytes in one pass 
    107     { 
    108       if (ip[0] & 1 << n) 
    109         loopmask++; 
    110       if (ip[1] & 1 << n) 
    111         loopmask++; 
    112       if (ip[2] & 1 << n) 
    113         loopmask++; 
    114       if (ip[3] & 1 << n) 
    115         loopmask++; 
    116     } 
    117   return loopmask; 
    118 } 
    11995 
    12096void 
Note: See TracChangeset for help on using the changeset viewer.