| 134 | return srcip, dstip, data |
| 135 | |
| 136 | def send_udp(self, sock, srcip, dstip, data): |
| 137 | if not srcip: |
| 138 | debug1( |
| 139 | "-- ignored UDP to %r: " |
| 140 | "couldn't determine source IP address" % (dstip,)) |
| 141 | return |
| 142 | |
| 143 | # debug3('Sending SRC: %r DST: %r' % (srcip, dstip)) |
| 144 | sender = socket.socket(sock.family, socket.SOCK_DGRAM) |
| 145 | sender.setsockopt(socket.SOL_IP, IP_BINDANY, 1) |
| 146 | sender.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
| 147 | sender.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) |
| 148 | sender.bind(srcip) |
| 149 | sender.sendto(data, dstip) |
| 150 | sender.close() |
| 151 | |
| 152 | def setup_udp_listener(self, udp_listener): |
| 153 | if udp_listener.v4 is not None: |