org.xbill.DNS.Opcode Java Examples

The following examples show how to use org.xbill.DNS.Opcode. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DnsMessageTransport.java    From nomulus with Apache License 2.0 5 votes vote down vote up
private void checkValidResponse(Message query, Message response) {
  verify(
      response.getHeader().getID() == query.getHeader().getID(),
      "response ID %s does not match query ID %s",
      response.getHeader().getID(),
      query.getHeader().getID());
  verify(
      response.getHeader().getOpcode() == query.getHeader().getOpcode(),
      "response opcode '%s' does not match query opcode '%s'",
      Opcode.string(response.getHeader().getOpcode()),
      Opcode.string(query.getHeader().getOpcode()));
}
 
Example #2
Source File: DnsUpdateWriterTest.java    From nomulus with Apache License 2.0 5 votes vote down vote up
private Message messageWithResponseCode(int responseCode) {
  Message message = new Message();
  message.getHeader().setOpcode(Opcode.UPDATE);
  message.getHeader().setFlag(Flags.QR);
  message.getHeader().setRcode(responseCode);
  return message;
}
 
Example #3
Source File: DnsMessageTransportTest.java    From nomulus with Apache License 2.0 5 votes vote down vote up
@Test
public void testResponseOpcodeMismatchThrowsException() throws Exception {
  simpleQuery.getHeader().setOpcode(Opcode.QUERY);
  expectedResponse.getHeader().setOpcode(Opcode.STATUS);
  when(mockSocket.getInputStream())
      .thenReturn(new ByteArrayInputStream(messageToBytesWithLength(expectedResponse)));
  when(mockSocket.getOutputStream()).thenReturn(new ByteArrayOutputStream());
  VerifyException thrown = assertThrows(VerifyException.class, () -> resolver.send(simpleQuery));
  assertThat(thrown)
      .hasMessageThat()
      .contains("response opcode 'STATUS' does not match query opcode 'QUERY'");
}
 
Example #4
Source File: update.java    From dnsjava with BSD 2-Clause "Simplified" License 4 votes vote down vote up
public Message newMessage() {
  Message msg = new Message();
  msg.getHeader().setOpcode(Opcode.UPDATE);
  return msg;
}
 
Example #5
Source File: jnamed.java    From dnsjava with BSD 2-Clause "Simplified" License 4 votes vote down vote up
byte[] generateReply(Message query, byte[] in, Socket s) {
  Header header;
  boolean badversion;
  int maxLength;
  int flags = 0;

  header = query.getHeader();
  if (header.getFlag(Flags.QR)) {
    return null;
  }
  if (header.getRcode() != Rcode.NOERROR) {
    return errorMessage(query, Rcode.FORMERR);
  }
  if (header.getOpcode() != Opcode.QUERY) {
    return errorMessage(query, Rcode.NOTIMP);
  }

  Record queryRecord = query.getQuestion();

  TSIGRecord queryTSIG = query.getTSIG();
  TSIG tsig = null;
  if (queryTSIG != null) {
    tsig = TSIGs.get(queryTSIG.getName());
    if (tsig == null || tsig.verify(query, in, null) != Rcode.NOERROR) {
      return formerrMessage(in);
    }
  }

  OPTRecord queryOPT = query.getOPT();
  if (s != null) {
    maxLength = 65535;
  } else if (queryOPT != null) {
    maxLength = Math.max(queryOPT.getPayloadSize(), 512);
  } else {
    maxLength = 512;
  }

  if (queryOPT != null && (queryOPT.getFlags() & ExtendedFlags.DO) != 0) {
    flags = FLAG_DNSSECOK;
  }

  Message response = new Message(query.getHeader().getID());
  response.getHeader().setFlag(Flags.QR);
  if (query.getHeader().getFlag(Flags.RD)) {
    response.getHeader().setFlag(Flags.RD);
  }
  response.addRecord(queryRecord, Section.QUESTION);

  Name name = queryRecord.getName();
  int type = queryRecord.getType();
  int dclass = queryRecord.getDClass();
  if (type == Type.AXFR && s != null) {
    return doAXFR(name, query, tsig, queryTSIG, s);
  }
  if (!Type.isRR(type) && type != Type.ANY) {
    return errorMessage(query, Rcode.NOTIMP);
  }

  byte rcode = addAnswer(response, name, type, dclass, 0, flags);
  if (rcode != Rcode.NOERROR && rcode != Rcode.NXDOMAIN) {
    return errorMessage(query, rcode);
  }

  addAdditional(response, flags);

  if (queryOPT != null) {
    int optflags = (flags == FLAG_DNSSECOK) ? ExtendedFlags.DO : 0;
    OPTRecord opt = new OPTRecord((short) 4096, rcode, (byte) 0, optflags);
    response.addRecord(opt, Section.ADDITIONAL);
  }

  response.setTSIG(tsig, Rcode.NOERROR, queryTSIG);
  return response.toWire(maxLength);
}