@@ -322,25 +322,23 @@ func (nr *NDPSpoofer) NeighCache() *NeighCache {
322322
323323func NewNDPSpoofer (conf * NDPSpoofConfig ) (* NDPSpoofer , error ) {
324324 ndpspoofer := & NDPSpoofer {}
325- var iface * net.Interface
326325 var err error
327326 if ! conf .RA && ! conf .NA {
328327 return nil , fmt .Errorf ("no attack vectors enabled" )
329328 }
330- iface , err = network .GetDefaultInterface ()
331- if err != nil {
332- iface , err = network .GetDefaultInterfaceFromRouteIPv6 ()
333- if err != nil {
334- return nil , err
335- }
336- }
337329 if conf .Interface != "" {
338330 ndpspoofer .iface , err = net .InterfaceByName (conf .Interface )
339331 if err != nil {
340332 return nil , err
341333 }
342334 } else {
343- ndpspoofer .iface = iface
335+ ndpspoofer .iface , err = network .GetDefaultInterface ()
336+ if err != nil {
337+ ndpspoofer .iface , err = network .GetDefaultInterfaceFromRouteIPv6 ()
338+ if err != nil {
339+ return nil , err
340+ }
341+ }
344342 }
345343 prefixLocal , err := network .GetIPv6LinkLocalUnicastPrefixFromInterface (ndpspoofer .iface )
346344 if err != nil {
@@ -353,26 +351,6 @@ func NewNDPSpoofer(conf *NDPSpoofConfig) (*NDPSpoofer, error) {
353351 if err == nil {
354352 ndpspoofer .hostIPGlobal = & hostIPGlobal
355353 }
356- if conf .Gateway != nil && network .Is6 (* conf .Gateway ) {
357- ndpspoofer .gwIP = conf .Gateway
358- } else {
359- var gwIP netip.Addr
360- if ndpspoofer .iface .Name != iface .Name {
361- gwIP , err = network .GetGatewayIPv6FromInterface (ndpspoofer .iface .Name )
362- if err != nil {
363- return nil , fmt .Errorf ("failed fetching gateway ip: %w" , err )
364- }
365- } else {
366- gwIP , err = network .GetDefaultGatewayIPv6 ()
367- if err != nil {
368- gwIP , err = network .GetDefaultGatewayIPv6FromRoute ()
369- if err != nil {
370- return nil , fmt .Errorf ("failed fetching gateway ip: %w" , err )
371- }
372- }
373- }
374- ndpspoofer .gwIP = & gwIP
375- }
376354 if conf .RA {
377355 ndpspoofer .raEnabled = true
378356 if conf .Prefix != nil {
@@ -418,6 +396,16 @@ func NewNDPSpoofer(conf *NDPSpoofConfig) (*NDPSpoofer, error) {
418396 }
419397 }
420398 if conf .NA {
399+ if conf .Gateway != nil && network .Is6 (* conf .Gateway ) {
400+ ndpspoofer .gwIP = conf .Gateway
401+ } else {
402+ var gwIP netip.Addr
403+ gwIP , err = network .GetGatewayIPv6FromInterface (ndpspoofer .iface .Name )
404+ if err != nil {
405+ return nil , fmt .Errorf ("failed fetching gateway ip: %w" , err )
406+ }
407+ ndpspoofer .gwIP = & gwIP
408+ }
421409 ndpspoofer .naEnabled = true
422410 ndpspoofer .neighCache = & NeighCache {Ifname : ndpspoofer .iface .Name , Entries : make (map [string ]net.HardwareAddr )}
423411 err = ndpspoofer .neighCache .Refresh ()
0 commit comments