def METHOD_NAME(fields):
    log.debug("Report fields are: %s" % fields)
    # check report version
    if 'test_version' not in fields:
        raise InvalidReportField('test_version')
    # check report CC
    #XXX: confirm what value we use for default CC and whether
    # or not we should support > 2 character CC
    if fields['probe_cc'] is None:
        fields['probe_cc'] = default_probe_cc
    if not re.match('^[A-Z\?]{2,4}$', fields['probe_cc'].upper()):
        raise InvalidReportField('probe_cc')
    # check report ASN
    if fields['probe_asn'] is None:
        fields['probe_asn'] = 'AS0'
    if not re.match('^AS[0-9]{1,10}$', fields['probe_asn'].upper()):
        raise InvalidReportField('probe_asn')
    # check report timestamp
    try:
        datetime_ts = datetime.fromtimestamp(fields['start_time'])
        datetime_str = timestamp(datetime_ts)
    except InvalidTimestampFormat:
        raise InvalidReportField('start_time')
    # check report IP
    try:
        IPAddress(fields['probe_ip'])
    except ValueError:
        raise InvalidReportField('probe_ip')
    # all looks good!