Lines 551-562
Ipv4L3Protocol::SetUp (uint32_t i)
|
Link Here
|
---|
|
551 |
{ |
568 |
{ |
552 |
Ipv4Interface *interface = GetInterface (i); |
569 |
Ipv4Interface *interface = GetInterface (i); |
553 |
interface->SetUp (); |
570 |
interface->SetUp (); |
554 |
} |
571 |
|
555 |
void |
572 |
// If interface address and network mask have been set, add a route |
556 |
Ipv4L3Protocol::SetDown (uint32_t i) |
573 |
// to the network of the interface (like e.g. ifconfig does on a |
557 |
{ |
574 |
// Linux box) |
558 |
Ipv4Interface *interface = GetInterface (i); |
575 |
if ((interface->GetAddress ()) != (Ipv4Address ()) |
|
|
576 |
&& (interface->GetNetworkMask ()) != (Ipv4Mask ())) |
577 |
{ |
578 |
AddNetworkRouteTo (interface->GetAddress ().CombineMask (interface->GetNetworkMask ()), |
579 |
interface->GetNetworkMask (), i); |
580 |
} |
581 |
} |
582 |
void |
583 |
Ipv4L3Protocol::SetDown (uint32_t ifaceIndex) |
584 |
{ |
585 |
Ipv4Interface *interface = GetInterface (ifaceIndex); |
559 |
interface->SetDown (); |
586 |
interface->SetDown (); |
|
|
587 |
|
588 |
// Remove all routes that are going through this interface |
589 |
bool modified = true; |
590 |
while (modified) |
591 |
{ |
592 |
modified = false; |
593 |
for (uint32_t i = 0; i < GetNRoutes (); i++) |
594 |
{ |
595 |
Ipv4Route *route = GetRoute (i); |
596 |
if (route->GetInterface () == ifaceIndex) |
597 |
{ |
598 |
RemoveRoute (i); |
599 |
modified = true; |
600 |
break; |
601 |
} |
602 |
} |
603 |
} |
560 |
} |
604 |
} |
561 |
|
605 |
|
562 |
|
606 |
|