Changeset 8955
- Timestamp:
- 02/06/08 19:28:17 (5 years ago)
- Location:
- src/router
- Files:
-
- 4 edited
-
services/networking/firewall.c (modified) (11 diffs)
-
services/services/igmp.c (modified) (1 diff)
-
shared/utils.c (modified) (1 diff)
-
shared/utils.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/router/services/networking/firewall.c
r8829 r8955 634 634 char *nmask = nvram_safe_get ("lan_netmask"); //assuming lan_netmask is valid 635 635 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); 636 loopmask = getmask (nmask); 637 638 save2file 639 ("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n", 640 lanface); 641 save2file 642 ("-A POSTROUTING -o %s -s %s0/%d -d %s0/%d -j MASQUERADE\n", 643 lanface, lan_cclass, loopmask, lan_cclass, loopmask); 644 char *next; 645 char dev[16]; 646 char var[80]; 640 647 #ifdef HAVE_MSSID 641 648 642 649 #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 } 650 int i; 651 652 char wifivifs[16]; 653 int devcount = getdevicecount (); 654 for (i = 0; i < devcount; i++) 655 { 656 sprintf (wifivifs, "ath%d_vifs", i); 657 if (nvram_nmatch ("0", "ath%d_bridged", i)) 658 { 659 save2file 660 ("-A POSTROUTING -o ath%d -m pkttype --pkt-type broadcast -j RETURN\n", 661 i); 662 save2file 663 ("-A POSTROUTING -o ath%d -s %s/%d -d %s/%d -j MASQUERADE\n", 664 i, nvram_nget ("ath%d_ipaddr", i), 665 getmask (nvram_nget ("ath%d_netmask", i)), 666 nvram_nget ("ath%d_ipaddr", i), 667 getmask (nvram_nget ("ath%d_netmask", i))); 668 } 669 char *vifs = nvram_safe_get (wifivifs); 670 if (vifs != NULL) 671 foreach (var, vifs, next) 672 { 673 if (nvram_nmatch ("0", "%s_bridged", var)) 674 { 675 save2file 676 ("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n", 677 var); 678 save2file 679 ("-A POSTROUTING -o %s -s %s/%d -d %s/%d -j MASQUERADE\n", 680 var, nvram_nget ("%s_ipaddr", var), 681 getmask (nvram_nget ("%s_netmask", var)), 682 nvram_nget ("%s_ipaddr", var), 683 getmask (nvram_nget ("%s_netmask", var))); 684 } 685 } 686 } 669 687 #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 688 int i; 689 char wifivifs[16]; 690 int devcount = get_wl_instances (); 691 for (i = 0; i < devcount; i++) 692 { 693 sprintf (wifivifs, "wl%d_vifs", i); 694 char *iname = get_wl_instance_name (i); 695 if (nvram_nmatch ("0", "%s_bridged", iname)) 696 { 697 save2file 698 ("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n", 699 iname); 700 save2file 701 ("-A POSTROUTING -o %s -s %s/%d -d %s/%d -j MASQUERADE\n", 702 iname, nvram_nget ("%s_ipaddr", iname), 703 getmask (nvram_nget ("%s_netmask", iname)), 704 nvram_nget ("%s_ipaddr", iname), 705 getmask (nvram_nget ("%s_netmask", iname))); 706 } 707 char *vifs = nvram_safe_get (wifivifs); 708 if (vifs != NULL) 709 foreach (var, vifs, next) 710 { 711 if (nvram_nmatch ("0", "%s_bridged", var)) 712 { 713 save2file 714 ("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n", 715 var); 716 save2file 717 ("-A POSTROUTING -o %s -s %s/%d -d %s/%d -j MASQUERADE\n", 718 var, nvram_nget ("%s_ipaddr", var), 719 getmask (nvram_nget ("%s_netmask", var)), 720 nvram_nget ("%s_ipaddr", var), 721 getmask (nvram_nget ("%s_netmask", var))); 722 } 723 } 724 } 725 #endif 726 727 728 #endif 729 char *vifs = nvram_safe_get ("lan_ifnames"); 730 if (vifs != NULL) 731 foreach (var, vifs, next) 732 { 733 if (nvram_nmatch ("0", "%s_bridged", var)) 734 { 735 save2file 736 ("-A POSTROUTING -o %s -m pkttype --pkt-type broadcast -j RETURN\n", 737 var); 738 save2file 739 ("-A POSTROUTING -o %s -s %s/%d -d %s/%d -j MASQUERADE\n", 740 var, nvram_nget ("%s_ipaddr", var), 741 getmask (nvram_nget ("%s_netmask", var)), 742 nvram_nget ("%s_ipaddr", var), 743 getmask (nvram_nget ("%s_netmask", var))); 744 } 745 } 700 746 701 747 #ifndef HAVE_MAGICBOX … … 1705 1751 /* IGMP query from WAN interface */ 1706 1752 save2file ("-A INPUT -p igmp -j %s\n", 1707 nvram_match ("block_multicast", "1")? log_drop : TARG_PASS);1753 doMultiCast()==0 ? log_drop : TARG_PASS); 1708 1754 1709 1755 #ifdef HAVE_TFTP … … 1736 1782 save2file ("-A INPUT -i %s -m state --state NEW -j logaccept\n", buff); 1737 1783 } 1784 char dev[16]; 1785 char var[80]; 1738 1786 #ifdef HAVE_MSSID 1739 1787 … … 1741 1789 int i; 1742 1790 1743 char dev[16];1744 char var[80];1745 1791 char wifivifs[16]; 1746 1792 int devcount = getdevicecount (); … … 1748 1794 { 1749 1795 sprintf (wifivifs, "ath%d_vifs", i); 1750 if (nvram_nmatch ("0","ath%d_bridged",i))1751 {1752 save2file ("-A INPUT -i ath%d -j ACCEPT\n", i);1753 }1796 if (nvram_nmatch ("0", "ath%d_bridged", i)) 1797 { 1798 save2file ("-A INPUT -i ath%d -j ACCEPT\n", i); 1799 } 1754 1800 char *vifs = nvram_safe_get (wifivifs); 1755 1801 if (vifs != NULL) 1756 1802 foreach (var, vifs, next) 1757 1803 { 1758 if (nvram_nmatch("0","%s_bridged",var))1759 {1760 save2file ("-A INPUT -i %s -j ACCEPT\n", var);1761 }1804 if (nvram_nmatch ("0", "%s_bridged", var)) 1805 { 1806 save2file ("-A INPUT -i %s -j ACCEPT\n", var); 1807 } 1762 1808 } 1763 1809 } 1764 1810 #else 1765 1811 int i; 1766 char dev[16];1767 char var[80];1768 1812 char wifivifs[16]; 1769 1813 int devcount = get_wl_instances (); … … 1772 1816 sprintf (wifivifs, "wl%d_vifs", i); 1773 1817 char *iname = get_wl_instance_name (i); 1774 if (nvram_nmatch ("0","%s_bridged",iname))1775 {1776 save2file ("-A INPUT -i %s -j ACCEPT\n", iname);1777 }1818 if (nvram_nmatch ("0", "%s_bridged", iname)) 1819 { 1820 save2file ("-A INPUT -i %s -j ACCEPT\n", iname); 1821 } 1778 1822 char *vifs = nvram_safe_get (wifivifs); 1779 1823 if (vifs != NULL) 1780 1824 foreach (var, vifs, next) 1781 1825 { 1782 if (nvram_nmatch("0","%s_bridged",var)) 1783 { 1826 if (nvram_nmatch ("0", "%s_bridged", var)) 1827 { 1828 save2file ("-A INPUT -i %s -j ACCEPT\n", var); 1829 } 1830 } 1831 } 1832 #endif 1833 1834 1835 #endif 1836 char *vifs = nvram_safe_get ("lan_ifnames"); 1837 if (vifs != NULL) 1838 foreach (var, vifs, next) 1839 { 1840 if (nvram_nmatch ("0", "%s_bridged", var)) 1841 { 1784 1842 save2file ("-A INPUT -i %s -j ACCEPT\n", var); 1785 }1786 1843 } 1787 1844 } 1788 #endif1789 1790 1791 #endif1792 1845 1793 1846 … … 1821 1874 { 1822 1875 1823 1824 #ifdef HAVE_MSSID1825 1826 #ifdef HAVE_MADWIFI1827 int i;1828 1829 1876 char *next; 1830 1877 char dev[16]; 1831 1878 char var[80]; 1879 1880 #ifdef HAVE_MSSID 1881 1882 #ifdef HAVE_MADWIFI 1883 int i; 1832 1884 char wifivifs[16]; 1833 1885 int devcount = getdevicecount (); … … 1835 1887 { 1836 1888 sprintf (wifivifs, "ath%d_vifs", i); 1837 if (nvram_nmatch ("0","ath%d_bridged",i))1838 {1839 save2file ("-A FORWARD -i ath%d -j ACCEPT\n", i);1840 }1889 if (nvram_nmatch ("0", "ath%d_bridged", i)) 1890 { 1891 save2file ("-A FORWARD -i ath%d -j ACCEPT\n", i); 1892 } 1841 1893 char *vifs = nvram_safe_get (wifivifs); 1842 1894 if (vifs != NULL) 1843 1895 foreach (var, vifs, next) 1844 1896 { 1845 if (nvram_nmatch("0","%s_bridged",var))1846 {1847 save2file ("-A FORWARD -i %s -j ACCEPT\n", var);1848 }1897 if (nvram_nmatch ("0", "%s_bridged", var)) 1898 { 1899 save2file ("-A FORWARD -i %s -j ACCEPT\n", var); 1900 } 1849 1901 } 1850 1902 } 1851 1903 #else 1852 1904 int i; 1853 char *next;1854 char dev[16];1855 char var[80];1856 1905 char wifivifs[16]; 1857 1906 int devcount = get_wl_instances (); … … 1860 1909 sprintf (wifivifs, "wl%d_vifs", i); 1861 1910 char *iname = get_wl_instance_name (i); 1862 if (nvram_nmatch ("0","%s_bridged",iname))1863 {1864 save2file ("-A FORWARD -i %s -j ACCEPT\n", iname);1865 }1911 if (nvram_nmatch ("0", "%s_bridged", iname)) 1912 { 1913 save2file ("-A FORWARD -i %s -j ACCEPT\n", iname); 1914 } 1866 1915 char *vifs = nvram_safe_get (wifivifs); 1867 1916 if (vifs != NULL) 1868 1917 foreach (var, vifs, next) 1869 1918 { 1870 if (nvram_nmatch("0","%s_bridged",var)) 1871 { 1919 if (nvram_nmatch ("0", "%s_bridged", var)) 1920 { 1921 save2file ("-A FORWARD -i %s -j ACCEPT\n", var); 1922 } 1923 } 1924 } 1925 #endif 1926 1927 1928 #endif 1929 char *vifs = nvram_safe_get ("lan_ifnames"); 1930 if (vifs != NULL) 1931 foreach (var, vifs, next) 1932 { 1933 if (nvram_nmatch ("0", "%s_bridged", var)) 1934 { 1872 1935 save2file ("-A FORWARD -i %s -j ACCEPT\n", var); 1873 }1874 1936 } 1875 1937 } 1876 #endif1877 1878 1879 #endif1880 1938 /* Accept the redirect, might be seen as INVALID, packets */ 1881 1939 save2file ("-A FORWARD -i %s -o %s -j ACCEPT\n", lanface, lanface); … … 2001 2059 } 2002 2060 /* ACCEPT packets for Multicast pass through */ 2003 if ( nvram_match ("block_multicast", "0"))2061 if (doMultiCast()>0) 2004 2062 save2file ("-A FORWARD -i %s -p udp -m udp --destination %s -j %s\n", 2005 2063 wanface, IP_MULTICAST, log_accept); … … 2842 2900 stop_firewall (void) 2843 2901 { 2844 stop_anchorfree ();2902 stop_anchorfree (); 2845 2903 /* Make sure the DMZ-LED is off (from service.c) */ 2846 2904 diag_led (DMZ, STOP_LED); -
src/router/services/services/igmp.c
r8951 r8955 27 27 #include <syslog.h> 28 28 #include <signal.h> 29 30 29 31 int 30 32 start_igmp_proxy (void) -
src/router/shared/utils.c
r8945 r8955 3978 3978 return loopmask; 3979 3979 } 3980 int doMultiCast(void) 3981 { 3982 char name[80], *next; 3983 int ifcount; 3984 if (nvram_match ("wan_proto", "disabled")) 3985 return 0; 3986 if (nvram_match ("block_multicast", "0")) 3987 { 3988 ifcount++; 3989 } 3990 foreach (name, nvram_safe_get ("lan_ifnames"), next) 3991 { 3992 if (nvram_nmatch ("0", "%s_bridged", name) 3993 && nvram_nmatch ("1", "%s_multicast", name)) 3994 { 3995 ifcount++; 3996 } 3997 } 3998 return ifcount; 3999 } -
src/router/shared/utils.h
r8945 r8955 524 524 525 525 int getmask(char *netmask); 526 int doMultiCast(void); 527 526 528 #define MAX_WDS_DEVS 10 527 529 #endif
Note: See TracChangeset
for help on using the changeset viewer.
