           {*******************************************************}
                               {FDL Declarations}
                             {Examiner GPL Edition}

           {*******************************************************}


                   {task_type Udp_Dns_Package.Udp_Dns_Task}


title task_type udp_dns_task;

  function round__(real) : integer;
  type natural = integer;
  type system__bit_order = (system__high_order_first, 
     system__low_order_first);
  type dns_types__packet_length_range = integer;
  type dns_types__packet_bytes_range = integer;
  type dns_types__byte = integer;
  type dns_types__unsigned_short = integer;
  type dns_types__opcode_type = (dns_types__query, 
     dns_types__iquery, dns_types__status);
  type dns_types__response_code = (dns_types__no_error, 
     dns_types__format_error, dns_types__server_failure, 
     dns_types__name_error, dns_types__not_implemented, 
     dns_types__refused);
  type dns_types__header_type = record
        messageid : dns_types__unsigned_short;
        qr : boolean;
        opcode : dns_types__opcode_type;
        aa : boolean;
        tc : boolean;
        rd : boolean;
        ra : boolean;
        res1 : boolean;
        res2 : boolean;
        res3 : boolean;
        rcode : dns_types__response_code;
        qdcount : dns_types__unsigned_short;
        ancount : dns_types__unsigned_short;
        nscount : dns_types__unsigned_short;
        arcount : dns_types__unsigned_short
     end;
  type dns_types__bytes_array_type = array [
     dns_types__packet_bytes_range] of dns_types__byte;
  type dns_types__dns_packet = record
        header : dns_types__header_type;
        bytes : dns_types__bytes_array_type
     end;
  const system__default_bit_order : system__bit_order = pending;
  const dns_types__packet_size : integer = pending;
  const dns_types__header_bits : integer = pending;
  const dns_types__udp_max_size : dns_types__packet_length_range = pending;
  const dns_network__max_query_size : integer = pending;
  const dns_types__response_code__base__first : 
     dns_types__response_code = pending; 
  const dns_types__response_code__base__last : 
     dns_types__response_code = pending; 
  const dns_types__opcode_type__base__first : 
     dns_types__opcode_type = pending; 
  const dns_types__opcode_type__base__last : 
     dns_types__opcode_type = pending; 
  const dns_types__unsigned_short__base__first : 
     dns_types__unsigned_short = pending; 
  const dns_types__unsigned_short__base__last : 
     dns_types__unsigned_short = pending; 
  const dns_types__byte__base__first : dns_types__byte = pending; 
  const dns_types__byte__base__last : dns_types__byte = pending; 
  const dns_types__packet_bytes_range__base__first : 
     dns_types__packet_bytes_range = pending; 
  const dns_types__packet_bytes_range__base__last : 
     dns_types__packet_bytes_range = pending; 
  const dns_types__packet_length_range__base__first : 
     dns_types__packet_length_range = pending; 
  const dns_types__packet_length_range__base__last : 
     dns_types__packet_length_range = pending; 
  const system__bit_order__base__first : system__bit_order = pending; 
  const system__bit_order__base__last : system__bit_order = pending; 
  const natural__base__first : integer = pending; 
  const natural__base__last : integer = pending; 
  const integer__base__first : integer = pending; 
  const integer__base__last : integer = pending; 
  const dns_types__dns_packet__size : integer = pending; 
  const dns_types__header_type__size : integer = pending; 
  const dns_types__response_code__first : 
     dns_types__response_code = pending; 
  const dns_types__response_code__last : dns_types__response_code = pending; 
  const dns_types__response_code__size : integer = pending; 
  const dns_types__opcode_type__first : dns_types__opcode_type = pending; 
  const dns_types__opcode_type__last : dns_types__opcode_type = pending; 
  const dns_types__opcode_type__size : integer = pending; 
  const dns_types__unsigned_short__first : 
     dns_types__unsigned_short = pending; 
  const dns_types__unsigned_short__last : 
     dns_types__unsigned_short = pending; 
  const dns_types__unsigned_short__size : integer = pending; 
  const dns_types__byte__first : dns_types__byte = pending; 
  const dns_types__byte__last : dns_types__byte = pending; 
  const dns_types__byte__modulus : integer = pending; 
  const dns_types__byte__size : integer = pending; 
  const dns_types__packet_bytes_range__first : 
     dns_types__packet_bytes_range = pending; 
  const dns_types__packet_bytes_range__last : 
     dns_types__packet_bytes_range = pending; 
  const dns_types__packet_bytes_range__size : integer = pending; 
  const dns_types__packet_length_range__first : 
     dns_types__packet_length_range = pending; 
  const dns_types__packet_length_range__last : 
     dns_types__packet_length_range = pending; 
  function dns_types__packet_length_range__min(
     dns_types__packet_length_range, 
     dns_types__packet_length_range) : 
     dns_types__packet_length_range;
  const dns_types__packet_length_range__size : integer = pending; 
  const system__bit_order__first : system__bit_order = pending; 
  const system__bit_order__last : system__bit_order = pending; 
  const system__bit_order__size : integer = pending; 
  const natural__first : integer = pending; 
  const natural__last : integer = pending; 
  const natural__size : integer = pending; 
  const integer__first : integer = pending; 
  const integer__last : integer = pending; 
  const integer__size : integer = pending; 
  var input_packet : dns_types__dns_packet;
  var input_bytes : dns_types__packet_length_range;
  var output_packet : dns_types__dns_packet;
  var output_bytes : dns_types__packet_length_range;
  var failure : boolean;
  var max_transmit : dns_types__packet_length_range;
  var failure__6 : boolean;
  var output_packet__6 : dns_types__dns_packet;
  var output_packet__5 : dns_types__dns_packet;
  var max_transmit__5 : dns_types__packet_length_range;
  var output_bytes__5 : dns_types__packet_length_range;
  var input_packet__3 : dns_types__dns_packet;
  var input_bytes__3 : dns_types__packet_length_range;
  var failure__3 : boolean;

end;
