github.com/mysteriumnetwork/node@v0.0.0-20240516044423-365054f76801/firewall/factory_linux.go (about)

     1  //go:build linux && !android
     2  
     3  /*
     4   * Copyright (C) 2020 The "MysteriumNetwork/node" Authors.
     5   *
     6   * This program is free software: you can redistribute it and/or modify
     7   * it under the terms of the GNU General Public License as published by
     8   * the Free Software Foundation, either version 3 of the License, or
     9   * (at your option) any later version.
    10   *
    11   * This program is distributed in the hope that it will be useful,
    12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    14   * GNU General Public License for more details.
    15   *
    16   * You should have received a copy of the GNU General Public License
    17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    18   */
    19  
    20  package firewall
    21  
    22  // NewOutgoingTrafficFirewall creates firewall instance for outgoing traffic.
    23  func NewOutgoingTrafficFirewall(enabled bool) OutgoingTrafficFirewall {
    24  	if enabled {
    25  		return &outgoingFirewallIptables{
    26  			referenceTracker: make(map[string]refCount),
    27  			trafficLockScope: none,
    28  		}
    29  	}
    30  
    31  	return &outgoingFirewallNoop{}
    32  }
    33  
    34  // NewIncomingTrafficFirewall creates firewall instance for incoming traffic.
    35  func NewIncomingTrafficFirewall(enabled bool) IncomingTrafficFirewall {
    36  	if enabled {
    37  		return &incomingFirewallIptables{}
    38  	}
    39  
    40  	return &incomingFirewallNoop{}
    41  }