| 46 | |
| 47 | |
| 48 | class TrafficTemplate: |
| 49 | def __init__( |
| 50 | self, |
| 51 | ip_src: Network, |
| 52 | ip_dst: Network, |
| 53 | l4_sport_range: PortList, |
| 54 | l4_dport_range: PortList, |
| 55 | ): |
| 56 | self.ip_src = ip_src |
| 57 | self.ip_dst = ip_dst |
| 58 | self.l4_sport_range = l4_sport_range |
| 59 | self.l4_dport_range = l4_dport_range |
| 60 | |
| 61 | def __iter__(self) -> typing.Iterator[Packet]: |
| 62 | for ip_src in self.ip_src.hosts(): |
| 63 | for ip_dst in self.ip_dst.hosts(): |
| 64 | if ip_src == ip_dst: |
| 65 | continue |
| 66 | for sport in self.l4_sport_range: |
| 67 | for dport in self.l4_dport_range: |
| 68 | yield Packet(ip_src, ip_dst, sport, dport) |
| 69 | |
| 70 | |
| 71 | class RSSAlgo: |