| 294 | # IPv4 on Windows: the entire 127/8 block is routable on the loopback adapter, nothing to do. |
| 295 | |
| 296 | def _RemoveLoopbackAddr( addr ): |
| 297 | is_ipv6 = ':' in addr |
| 298 | sys_name = platform.system() |
| 299 | if sys_name == 'Darwin': |
| 300 | if is_ipv6: |
| 301 | print( "Running 'ifconfig lo0 inet6 %s delete'" % addr ) |
| 302 | subprocess.run( [ 'ifconfig', 'lo0', 'inet6', addr, 'delete' ], check=False ) |
| 303 | else: |
| 304 | print( "Running 'ifconfig lo0 -alias %s'" % addr ) |
| 305 | subprocess.run( [ 'ifconfig', 'lo0', '-alias', addr ], check=False ) |
| 306 | elif sys_name == 'Linux': |
| 307 | if is_ipv6: |
| 308 | print( "Running 'ip -6 addr del %s/112 dev lo'" % addr ) |
| 309 | subprocess.run( [ 'ip', '-6', 'addr', 'del', addr + '/112', 'dev', 'lo' ], check=False ) |
| 310 | # IPv4 on Linux: nothing was added, nothing to remove. |
| 311 | elif sys_name == 'Windows': |
| 312 | if is_ipv6: |
| 313 | print( "Running 'netsh interface ipv6 delete address \"%s\" %s'" % ( _WINDOWS_LOOPBACK_IFACE, addr ) ) |
| 314 | subprocess.run( [ 'netsh', 'interface', 'ipv6', 'delete', 'address', |
| 315 | _WINDOWS_LOOPBACK_IFACE, addr ], check=False ) |
| 316 | # IPv4 on Windows: nothing was added, nothing to remove. |
| 317 | |
| 318 | def SetupMockIPs(): |
| 319 | """Add loopback aliases for every mock address that is not already bindable.""" |