github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/libnetwork/drivers/bridge/setup_ip_forwarding.go (about)

     1  package bridge
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  )
     7  
     8  const (
     9  	ipv4ForwardConf     = "/proc/sys/net/ipv4/ip_forward"
    10  	ipv4ForwardConfPerm = 0644
    11  )
    12  
    13  func setupIPForwarding() error {
    14  	// Get current IPv4 forward setup
    15  	ipv4ForwardData, err := ioutil.ReadFile(ipv4ForwardConf)
    16  	if err != nil {
    17  		return fmt.Errorf("Cannot read IP forwarding setup: %v", err)
    18  	}
    19  
    20  	// Enable IPv4 forwarding only if it is not already enabled
    21  	if ipv4ForwardData[0] != '1' {
    22  		// Enable IPv4 forwarding
    23  		if err := ioutil.WriteFile(ipv4ForwardConf, []byte{'1', '\n'}, ipv4ForwardConfPerm); err != nil {
    24  			return fmt.Errorf("Setup IP forwarding failed: %v", err)
    25  		}
    26  	}
    27  
    28  	return nil
    29  }