Annotation of embedaddon/miniupnpd/miniupnpc/README, revision 1.1.1.1

1.1       misho       1: Project: miniupnp
                      2: Project web page: http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
                      3: github: https://github.com/miniupnp/miniupnp
                      4: Author: Thomas Bernard
                      5: Copyright (c) 2005-2023 Thomas Bernard
                      6: This software is subject to the conditions detailed in the
                      7: LICENSE file provided within this distribution.
                      8: 
                      9: 
                     10: * miniUPnP Client - miniUPnPc *
                     11: 
                     12: To compile, simply run 'gmake' (could be 'make' on your system).
                     13: Under win32, to compile with MinGW, type "mingw32make.bat".
                     14: MS Visual C solution and project files are supplied in the msvc/ subdirectory.
                     15: The miniupnpc library is available as a static library or as a DLL :
                     16: define MINIUPNP_STATICLIB if you want to link against the static library.
                     17: 
                     18: The compilation is known to work under linux, FreeBSD,
                     19: OpenBSD, MacOS X, AmigaOS and cygwin.
                     20: The official AmigaOS4.1 SDK was used for AmigaOS4 and GeekGadgets for AmigaOS3.
                     21: upx (http://upx.sourceforge.net) is used to compress the win32 .exe files.
                     22: 
                     23: To install the library and headers on the system use :
                     24: > su
                     25: > make install
                     26: > exit
                     27: 
                     28: alternatively, to install into a specific location, use :
                     29: > INSTALLPREFIX=/usr/local make install
                     30: 
                     31: upnpc.c is a sample client using the libminiupnpc.
                     32: To use the libminiupnpc in your application, link it with
                     33: libminiupnpc.a (or .so) and use the following functions found in miniupnpc.h,
                     34: upnpcommands.h and miniwget.h :
                     35: - upnpDiscover()
                     36: - UPNP_GetValidIGD()
                     37: - miniwget()
                     38: - parserootdesc()
                     39: - GetUPNPUrls()
                     40: - UPNP_* (calling UPNP methods)
                     41: 
                     42: Note : use #include <miniupnpc/miniupnpc.h> etc... for the includes
                     43: and -lminiupnpc for the link
                     44: 
                     45: Discovery process is speeded up when MiniSSDPd is running on the machine.
                     46: 
                     47: 
                     48: * Python module *
                     49: 
                     50: you can build a python module with 'make pythonmodule'
                     51: and install it with 'make installpythonmodule'.
                     52: setup.py (and setupmingw32.py) are included in the distribution.
                     53: 
                     54: 
                     55: Feel free to contact me if you have any problem :
                     56: e-mail : miniupnp@free.fr
                     57: 
                     58: If you are using libminiupnpc in your application, please
                     59: send me an email !
                     60: 
                     61: For any question, you can use the web forum :
                     62: https://miniupnp.tuxfamily.org/forum/
                     63: 
                     64: Bugs should be reported on GitHub :
                     65: https://github.com/miniupnp/miniupnp/issues
                     66: 
                     67: * Linux firewall configuration for UPnP clients *
                     68: 
                     69: Due to how UPnP protocol is designed, unicast responses to UPnP multicast client
                     70: requests are not tracked by Linux netfilter. And therefore netfilter executes
                     71: default action for them (which is in most cases DROP response packet).
                     72: 
                     73: To workaround this limitation, custom ipset hash table can be used. It is
                     74: supported since Linux kernel >= 2.6.39.
                     75: 
                     76: Rules for IPv4:
                     77: $ ipset create upnp hash:ip,port timeout 3
                     78: $ iptables -A OUTPUT -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j SET --add-set upnp src,src --exist
                     79: $ iptables -A INPUT -p udp -m set --match-set upnp dst,dst -j ACCEPT
                     80: $ iptables -A INPUT -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT
                     81: 
                     82: Rules for IPv6:
                     83: $ ipset create upnp6 hash:ip,port timeout 3 family inet6
                     84: $ ip6tables -A OUTPUT -d ff02::c/128 -p udp -m udp --dport 1900 -j SET --add-set upnp6 src,src --exist
                     85: $ ip6tables -A OUTPUT -d ff05::c/128 -p udp -m udp --dport 1900 -j SET --add-set upnp6 src,src --exist
                     86: $ ip6tables -A INPUT -p udp -m set --match-set upnp6 dst,dst -j ACCEPT
                     87: $ ip6tables -A INPUT -d ff02::c/128 -p udp -m udp --dport 1900 -j ACCEPT
                     88: $ ip6tables -A INPUT -d ff05::c/128 -p udp -m udp --dport 1900 -j ACCEPT
                     89: 
                     90: Detailed description is available on:
                     91: https://serverfault.com/a/911286
                     92: https://unix.stackexchange.com/a/444804

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>