Entry point

    :param argv: Program arguments

def main(argv=None):
    """
    Entry point

    :param argv: Program arguments
    """
    parser = argparse.ArgumentParser(description="Multicast packets spy")

    parser.add_argument("-g", "--group", dest="group", default="239.0.0.1",
                        help="Multicast target group (address)")
    parser.add_argument("-p", "--port", type=int, dest="port", default=42000,
                        help="Multicast target port")

    parser.add_argument("-d", "--debug", action="store_true", dest="debug",
                        help="Set logger to DEBUG level")
    parser.add_argument("-v", "--verbose", action="store_true", dest="verbose",
                        help="Verbose output")

    # Parse arguments
    args = parser.parse_args(argv)

    # Configure the logger
    if args.debug:
        logging.basicConfig(level=logging.DEBUG)
    else:
        logging.basicConfig(level=logging.WARNING)

    try:
        return run_spy(args.group, args.port, args.verbose)
    except Exception as ex:
        logging.exception("Error running spy: %s", ex)

    return 1