code: def Match(addr1, addr2):
      
      if _debug: Match._debug("Match %r %r", addr1, addr2)
  
      if (addr2.addrType == Address.localBroadcastAddr):
          # match any local station
          return (addr1.addrType == Address.localStationAddr) or (addr1.addrType == Address.localBroadcastAddr)
      elif (addr2.addrType == Address.localStationAddr):
          # match a specific local station
          return (addr1.addrType == Address.localStationAddr) and (addr1.addrAddr == addr2.addrAddr)
      elif (addr2.addrType == Address.remoteBroadcastAddr):
          # match any remote station or remote broadcast on a matching network
          return ((addr1.addrType == Address.remoteStationAddr) or (addr1.addrType == Address.remoteBroadcastAddr)) \
              and (addr1.addrNet == addr2.addrNet)
      elif (addr2.addrType == Address.remoteStationAddr):
          # match a specific remote station
          return (addr1.addrType == Address.remoteStationAddr) and \
              (addr1.addrNet == addr2.addrNet) and (addr1.addrAddr == addr2.addrAddr)
      elif (addr2.addrType == Address.globalBroadcastAddr):
          # match a global broadcast address
          return (addr1.addrType == Address.globalBroadcastAddr)
      else:
          raise RuntimeError, "invalid match combination"
docs: Return true iff addr1 matches addr2.