(self)
| 409 | raise Fatal('%r returned %d' % (self.argv, rv)) |
| 410 | |
| 411 | def start(self): |
| 412 | self.pfile.write(b'ROUTES\n') |
| 413 | for (family, ip, width, fport, lport) \ |
| 414 | in self.subnets_include + self.auto_nets: |
| 415 | self.pfile.write(b'%d,%d,0,%s,%d,%d\n' % (family, width, |
| 416 | ip.encode("ASCII"), |
| 417 | fport, lport)) |
| 418 | for (family, ip, width, fport, lport) in self.subnets_exclude: |
| 419 | self.pfile.write(b'%d,%d,1,%s,%d,%d\n' % (family, width, |
| 420 | ip.encode("ASCII"), |
| 421 | fport, lport)) |
| 422 | |
| 423 | self.pfile.write(b'NSLIST\n') |
| 424 | for (family, ip) in self.nslist: |
| 425 | self.pfile.write(b'%d,%s\n' |
| 426 | % (family, ip.encode("ASCII"))) |
| 427 | |
| 428 | self.pfile.write( |
| 429 | b'PORTS %d,%d,%d,%d\n' |
| 430 | % (self.redirectport_v6, self.redirectport_v4, |
| 431 | self.dnsport_v6, self.dnsport_v4)) |
| 432 | |
| 433 | udp = 0 |
| 434 | if self.udp: |
| 435 | udp = 1 |
| 436 | if self.user is None: |
| 437 | user = b'-' |
| 438 | elif isinstance(self.user, str): |
| 439 | user = bytes(self.user, 'utf-8') |
| 440 | else: |
| 441 | user = b'%d' % self.user |
| 442 | if self.group is None: |
| 443 | group = b'-' |
| 444 | elif isinstance(self.group, str): |
| 445 | group = bytes(self.group, 'utf-8') |
| 446 | else: |
| 447 | group = b'%d' % self.group |
| 448 | self.pfile.write(b'GO %d %s %s %s %d\n' % |
| 449 | (udp, user, group, bytes(self.tmark, 'ascii'), os.getpid())) |
| 450 | self.pfile.flush() |
| 451 | |
| 452 | line = self.pfile.readline() |
| 453 | self.check() |
| 454 | if line != b'STARTED\n': |
| 455 | raise Fatal('%r expected STARTED, got %r' % (self.argv, line)) |
| 456 | |
| 457 | def sethostip(self, hostname, ip): |
| 458 | assert not re.search(br'[^-\w\.]', hostname) |
no test coverage detected