def _broadcast_rpl_pkt(self, rpl): # broadcast dstip = ALL_RPL_NODES dstmac = BROADCAST_MAC for port in self.ports.keys(): p = self.ports[port] pkt = self._build_rpl_pkt(dodag,src_ip = self.ip, dst_ip = dstip, src_mac = p['hw_addr'], dst_mac = dstmac, rpl= rpl) send_packet(self.datapath, port, pkt)
def _send_rpl_pkt(self, out_port=[], dst_ip=[], dst_mac =[], rpl): """ out_port: list of output port numbers dst_ip: list of destination ip addresses for each output port dst_mac: list of dst mac of each output port """ assert len(out_port) == len(dst_ip) assert len(dst_ip) == len(dst_mac) # unicast or multicast for i in range(out_port): port = out_port[i] dstip = dst_ip[i] dstmac = dst_mac[i] p = self.ports[port] pkt = self._build_rpl_pkt(dodag,src_ip = self.ip, dst_ip = dstip, src_mac = p['hw_addr'], dst_mac = dstmac, rpl= rpl) send_packet(self.datapath, port, pkt)