Changeset 8815
- Timestamp:
- 01/22/08 05:01:10 (5 years ago)
- Location:
- src/router/services
- Files:
-
- 2 edited
-
networking/firewall.c (modified) (4 diffs)
-
services/anchorfree.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/router/services/networking/firewall.c
r8800 r8815 51 51 #include <code_pattern.h> 52 52 #include <utils.h> 53 #include <wlutils.h> 53 54 #include <cy_conf.h> 54 55 #endif /* DEVELOPE_ENV */ … … 633 634 char *nmask = nvram_safe_get ("lan_netmask"); //assuming lan_netmask is valid 634 635 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 659 700 660 701 #ifndef HAVE_MAGICBOX … … 1738 1779 { 1739 1780 sprintf (wifivifs, "ath%d_vifs", i); 1781 if (nvram_nmatch("0","ath%d_bridged",i)) 1782 { 1740 1783 save2file ("-A INPUT -i ath%d -j ACCEPT\n", i); 1741 1784 save2file ("-A FORWARD -i ath%d -j ACCEPT\n", i); 1785 } 1742 1786 char *vifs = nvram_safe_get (wifivifs); 1743 1787 if (vifs != NULL) 1744 1788 foreach (var, vifs, next) 1745 1789 { 1790 if (nvram_nmatch("0","%s_bridged",var)) 1791 { 1746 1792 save2file ("-A INPUT -i %s -j ACCEPT\n", var); 1747 1793 save2file ("-A FORWARD -i %s -j ACCEPT\n", var); 1794 } 1748 1795 } 1749 1796 } … … 1759 1806 sprintf (wifivifs, "wl%d_vifs", i); 1760 1807 char *iname = get_wl_instance_name (i); 1808 if (nvram_nmatch("0","%s_bridged",iname)) 1809 { 1761 1810 save2file ("-A INPUT -i %s -j ACCEPT\n", iname); 1762 1811 save2file ("-A FORWARD -i %s -j ACCEPT\n", iname); 1763 1812 } 1764 1813 char *vifs = nvram_safe_get (wifivifs); 1765 1814 if (vifs != NULL) 1766 1815 foreach (var, vifs, next) 1767 1816 { 1817 if (nvram_nmatch("0","%s_bridged",var)) 1818 { 1768 1819 save2file ("-A INPUT -i %s -j ACCEPT\n", var); 1769 1820 save2file ("-A FORWARD -i %s -j ACCEPT\n", var); 1821 } 1770 1822 } 1771 1823 } -
src/router/services/services/anchorfree.c
r8808 r8815 1 1 /* 2 * igmp.c3 * 4 * Copyright (C) 200 7Sebastian Gottschall <gottschall@dd-wrt.com>2 * AnchorFree.c 3 * 4 * Copyright (C) 2008 Sebastian Gottschall <gottschall@dd-wrt.com> 5 5 * 6 6 * This program is free software; you can redistribute it and/or … … 93 93 } 94 94 95 int96 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 pass107 {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 }119 95 120 96 void
Note: See TracChangeset
for help on using the changeset viewer.
