| package osl |
| |
| import "net" |
| |
| func (nh *neigh) processNeighOptions(options ...NeighOption) { |
| for _, opt := range options { |
| if opt != nil { |
| opt(nh) |
| } |
| } |
| } |
| |
| // WithLinkName sets the srcName of the link to use in the neighbor entry. |
| func WithLinkName(name string) NeighOption { |
| return func(nh *neigh) { |
| nh.linkName = name |
| } |
| } |
| |
| // WithFamily sets the address-family for the neighbor entry. e.g. [syscall.AF_BRIDGE]. |
| func WithFamily(family int) NeighOption { |
| return func(nh *neigh) { |
| nh.family = family |
| } |
| } |
| |
| // WithIsBridge sets whether the interface is a bridge. |
| func WithIsBridge(isBridge bool) IfaceOption { |
| return func(i *Interface) error { |
| i.bridge = isBridge |
| return nil |
| } |
| } |
| |
| // WithMaster sets the master interface (if any) for this interface. The |
| // master interface name should refer to the srcName of a previously added |
| // interface of type bridge. |
| func WithMaster(name string) IfaceOption { |
| return func(i *Interface) error { |
| i.master = name |
| return nil |
| } |
| } |
| |
| // WithMACAddress sets the interface MAC-address. |
| func WithMACAddress(mac net.HardwareAddr) IfaceOption { |
| return func(i *Interface) error { |
| i.mac = mac |
| return nil |
| } |
| } |
| |
| // WithIPv4Address sets the IPv4 address of the interface. |
| func WithIPv4Address(addr *net.IPNet) IfaceOption { |
| return func(i *Interface) error { |
| i.address = addr |
| return nil |
| } |
| } |
| |
| // WithIPv6Address sets the IPv6 address of the interface. |
| func WithIPv6Address(addr *net.IPNet) IfaceOption { |
| return func(i *Interface) error { |
| i.addressIPv6 = addr |
| return nil |
| } |
| } |
| |
| // WithLinkLocalAddresses set the link-local IP addresses of the interface. |
| func WithLinkLocalAddresses(list []*net.IPNet) IfaceOption { |
| return func(i *Interface) error { |
| i.llAddrs = list |
| return nil |
| } |
| } |
| |
| // WithRoutes sets the interface routes. |
| func WithRoutes(routes []*net.IPNet) IfaceOption { |
| return func(i *Interface) error { |
| i.routes = routes |
| return nil |
| } |
| } |