(self, ancbufsize, maxhop=255,
ignoreflags=0)
| 4516 | len(MSG)) |
| 4517 | |
| 4518 | def checkTrafficClassAndHopLimit(self, ancbufsize, maxhop=255, |
| 4519 | ignoreflags=0): |
| 4520 | # Receive traffic class and hop limit into ancbufsize bytes of |
| 4521 | # ancillary data space. Check that data is MSG, ancillary |
| 4522 | # data is not truncated (but ignore any flags in ignoreflags), |
| 4523 | # and traffic class and hop limit are in range (hop limit no |
| 4524 | # more than maxhop). |
| 4525 | self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
| 4526 | socket.IPV6_RECVHOPLIMIT, 1) |
| 4527 | self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
| 4528 | socket.IPV6_RECVTCLASS, 1) |
| 4529 | self.misc_event.set() |
| 4530 | msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
| 4531 | len(MSG), ancbufsize) |
| 4532 | |
| 4533 | self.assertEqual(msg, MSG) |
| 4534 | self.checkRecvmsgAddress(addr, self.cli_addr) |
| 4535 | self.checkFlags(flags, eor=True, checkunset=socket.MSG_CTRUNC, |
| 4536 | ignore=ignoreflags) |
| 4537 | self.assertEqual(len(ancdata), 2) |
| 4538 | ancmap = self.ancillaryMapping(ancdata) |
| 4539 | |
| 4540 | tcdata = ancmap[(socket.IPPROTO_IPV6, socket.IPV6_TCLASS)] |
| 4541 | self.assertEqual(len(tcdata), SIZEOF_INT) |
| 4542 | a = array.array("i") |
| 4543 | a.frombytes(tcdata) |
| 4544 | self.assertGreaterEqual(a[0], 0) |
| 4545 | self.assertLessEqual(a[0], 255) |
| 4546 | |
| 4547 | hldata = ancmap[(socket.IPPROTO_IPV6, socket.IPV6_HOPLIMIT)] |
| 4548 | self.assertEqual(len(hldata), SIZEOF_INT) |
| 4549 | a = array.array("i") |
| 4550 | a.frombytes(hldata) |
| 4551 | self.assertGreaterEqual(a[0], 0) |
| 4552 | self.assertLessEqual(a[0], maxhop) |
| 4553 | |
| 4554 | @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
| 4555 | "IPV6_RECVTCLASS", "IPV6_TCLASS") |
no test coverage detected