in google_guest_agent/addresses.go [186:231]
func (a *addressMgr) applyWSFCFilter(config *cfg.Sections) {
wsfcAddresses := a.parseWSFCAddresses(config)
var wsfcAddrs []string
for _, wsfcAddr := range strings.Split(wsfcAddresses, ",") {
if wsfcAddr == "" {
continue
}
if net.ParseIP(wsfcAddr) == nil {
logger.Errorf("Address for WSFC is not in valid form %s", wsfcAddr)
continue
}
wsfcAddrs = append(wsfcAddrs, wsfcAddr)
}
if len(wsfcAddrs) != 0 {
interfaces := newMetadata.Instance.NetworkInterfaces
for idx := range interfaces {
var filteredForwardedIps []string
for _, ip := range interfaces[idx].ForwardedIps {
if !slices.Contains(wsfcAddrs, ip) {
filteredForwardedIps = append(filteredForwardedIps, ip)
}
}
interfaces[idx].ForwardedIps = filteredForwardedIps
var filteredTargetInstanceIps []string
for _, ip := range interfaces[idx].TargetInstanceIps {
if !slices.Contains(wsfcAddrs, ip) {
filteredTargetInstanceIps = append(filteredTargetInstanceIps, ip)
}
}
interfaces[idx].TargetInstanceIps = filteredTargetInstanceIps
}
} else {
wsfcEnable := a.parseWSFCEnable(config)
if wsfcEnable {
for idx := range newMetadata.Instance.NetworkInterfaces {
newMetadata.Instance.NetworkInterfaces[idx].ForwardedIps = nil
newMetadata.Instance.NetworkInterfaces[idx].TargetInstanceIps = nil
}
}
}
}