Skip to content

Commit 9e86401

Browse files
committed
Add portForwards.guestIPZero property
When guestIPZero is set the rule will only match if the bind is against literal 0.0.0.0 and not any other interface. Signed-off-by: Jan Dubois <jan.dubois@suse.com>
1 parent 59438a1 commit 9e86401

File tree

4 files changed

+12
-2
lines changed

4 files changed

+12
-2
lines changed

pkg/hostagent/port.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ func (pf *portForwarder) forwardingAddresses(guest api.IPPort) (string, string)
5252
case guest.IP.IsUnspecified():
5353
case guest.IP.Equal(rule.GuestIP):
5454
case guest.IP.Equal(net.IPv6loopback) && rule.GuestIP.Equal(api.IPv4loopback1):
55-
case rule.GuestIP.IsUnspecified():
55+
case rule.GuestIP.IsUnspecified() && !rule.GuestIPZero:
56+
// When GuestIPZero is true, then 0.0.0.0 must be an exact match, which is already
57+
// handled above by the guest.IP.IsUnspecified() condition.
5658
default:
5759
continue
5860
}

pkg/limayaml/defaults.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,11 @@ func FillPortForwardDefaults(rule *PortForward, instDir string) {
402402
rule.Proto = TCP
403403
}
404404
if rule.GuestIP == nil {
405-
rule.GuestIP = api.IPv4loopback1
405+
if rule.GuestIPZero {
406+
rule.GuestIP = net.IPv4zero
407+
} else {
408+
rule.GuestIP = api.IPv4loopback1
409+
}
406410
}
407411
if rule.HostIP == nil {
408412
rule.HostIP = api.IPv4loopback1

pkg/limayaml/limayaml.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ const (
112112
)
113113

114114
type PortForward struct {
115+
GuestIPZero bool `yaml:"guestIPZero,omitempty" json:"guestIPZero,omitempty"`
115116
GuestIP net.IP `yaml:"guestIP,omitempty" json:"guestIP,omitempty"`
116117
GuestPort int `yaml:"guestPort,omitempty" json:"guestPort,omitempty"`
117118
GuestPortRange [2]int `yaml:"guestPortRange,omitempty" json:"guestPortRange,omitempty"`

pkg/limayaml/validate.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ func Validate(y LimaYAML, warn bool) error {
134134
}
135135
for i, rule := range y.PortForwards {
136136
field := fmt.Sprintf("portForwards[%d]", i)
137+
if rule.GuestIPZero && !rule.GuestIP.Equal(net.IPv4zero) {
138+
return fmt.Errorf("field `%s.guestIPZero` can only be true when field `%s.guestIP` is 0.0.0.0", field, field)
139+
}
137140
if rule.GuestPort != 0 {
138141
if rule.GuestSocket != "" {
139142
return fmt.Errorf("field `%s.guestPort` must be 0 when field `%s.guestSocket` is set", field, field)

0 commit comments

Comments
 (0)