All pastes #730521 Raw Edit

Mine

public text v1 · immutable
·published 2007-10-09 09:02 UTC
rendered paste body
        # !! Nathelper
        # Special handling for NATed clients; first, NAT test is
        # executed: it looks for via!=received and RFC1918 addresses
        # in Contact (may fail if line-folding is used); also,
        # the received test should, if completed, should check all
        # vias for rpesence of received
        if (nat_uac_test("3")) {
                # Allow RR-ed requests, as these may indicate that
                # a NAT-enabled proxy takes care of it; unless it is
                # a REGISTER

                if (is_method("REGISTER") || !is_present_hf("Record-Route")) {
                    log("LOG: Someone trying to register from private IP, rewriting\n");

                    # This will work only for user agents that support symmetric
                    # communication. We tested quite many of them and majority is
                    # smart enough to be symmetric. In some phones it takes a configuration
                    # option. With Cisco 7960, it is called NAT_Enable=Yes, with kphone it is
                    # called "symmetric media" and "symmetric signalling".

                    fix_nated_contact(); # Rewrite contact with source IP of signalling
                    if ( is_method("INVITE") ) {
                        fix_nated_sdp("1"); # Add direction=active to SDP
                    };
                    force_rport(); # Add rport parameter to topmost Via
                    setbflag(6);    # Mark as NATed

                        # if you want sip nat pinging
                        # setbflag(8);
                };
        };