| 352 | |
| 353 | |
| 354 | class NetworkingThreadIPv6(NetworkingThread): |
| 355 | def __init__(self, observer): |
| 356 | super().__init__(observer) |
| 357 | |
| 358 | def _makeMreq(self, addr): |
| 359 | "IPv6 multicast group join/leave request" |
| 360 | return struct.pack("=16si", socket.inet_pton(socket.AF_INET6, MULTICAST_IPV6_ADDRESS), int(addr.scope_id)) |
| 361 | |
| 362 | def _get_inet(self): |
| 363 | return socket.AF_INET6 |
| 364 | |
| 365 | def _get_multicast(self): |
| 366 | return socket.IPV6_MULTICAST_IF |
| 367 | |
| 368 | def _get_ip_proto(self): |
| 369 | return socket.IPPROTO_IPV6 |
| 370 | |
| 371 | def _get_ip_join(self): |
| 372 | return socket.IPV6_JOIN_GROUP |
| 373 | |
| 374 | def _get_ip_leave(self): |
| 375 | return socket.IPV6_LEAVE_GROUP |
| 376 | |
| 377 | def _get_multicast_ttl(self): |
| 378 | return socket.IPV6_MULTICAST_HOPS |
| 379 | |
| 380 | |
| 381 | class ThreadedNetworking: |