Ejemplo n.º 1
0
 def setUp(self):
    self._GW_IP = "192.0.0.1"
    self._GW_MAC = "51:00:00:00:00:01"
    self.arp_stack = ArpStack(self._GW_IP, self._GW_MAC)
    self.eth_stack = MockEthStack()
    self.arp_stack.set_eth_stack(self.eth_stack)
    return
Ejemplo n.º 2
0
class ArpTest(unittest.TestCase):
   def setUp(self):
      self._GW_IP = "192.0.0.1"
      self._GW_MAC = "51:00:00:00:00:01"
      self.arp_stack = ArpStack(self._GW_IP, self._GW_MAC)
      self.eth_stack = MockEthStack()
      self.arp_stack.set_eth_stack(self.eth_stack)
      return

   def tearDown(self):
      return

   def testGetSetArpCache(self):
      self.arp_stack._add_arp_entry(socket.inet_aton("127.0.0.1"),
                                    mac_aton("50:00:00:00:00:01"))
      nmac = self.arp_stack.get_mac_addr(socket.inet_aton("127.0.0.1"))
      self.assertEqual(nmac, mac_aton("50:00:00:00:00:01"))
   
   def testGetSetArpCacheNotFound(self):
      nmac = self.arp_stack.get_mac_addr("127.0.0.1")
      self.assertEqual(nmac, None) 

   def testHandleSouthInco1(self):
      '''
      test handle arp request
      '''
      req = dpkt.arp.ARP()
      req.op = dpkt.arp.ARP_OP_REQUEST
      req.sha = mac_aton("00:00:00:00:00:01")
      req.spa = socket.inet_aton("192.0.1.11")
      req.tha = mac_aton("ff:ff:ff:ff:ff:ff")  #don't care
      req.tpa = socket.inet_aton("192.0.0.1")  #where is 192.0.0.1 
      self.arp_stack.handle_south_inco(req)
      rsp = self.eth_stack.eth_pkg
      self.assertEqual(rsp.op, dpkt.arp.ARP_OP_REPLY)
      self.assertEqual(rsp.sha, mac_aton(self._GW_MAC))
      self.assertEqual(rsp.spa, socket.inet_aton(self._GW_IP))
      self.assertEqual(rsp.tha, mac_aton("00:00:00:00:00:01"))
      self.assertEqual(rsp.tpa, socket.inet_aton("192.0.1.11"))
      nmac = self.arp_stack.get_mac_addr(socket.inet_aton("192.0.1.11"))
      self.assertEqual(nmac, mac_aton("00:00:00:00:00:01"))
      return 

   def testHandleSouthInco2(self):
      '''
      test handle arp request, not query gw, should be ignored
      '''
      req = dpkt.arp.ARP()
      req.op = dpkt.arp.ARP_OP_REQUEST
      req.sha = mac_aton("00:00:00:00:00:01")
      req.spa = socket.inet_aton("192.0.1.11")
      req.tha = mac_aton("ff:ff:ff:ff:ff:ff")  #don't care
      req.tpa = socket.inet_aton("192.0.0.2")  #where is 192.0.0.2 
      self.arp_stack.handle_south_inco(req)
      rsp = self.eth_stack.eth_pkg
      self.assertEqual(rsp, None)
      nmac = self.arp_stack.get_mac_addr(socket.inet_aton("192.0.1.11"))
      self.assertEqual(nmac, mac_aton("00:00:00:00:00:01"))
      return