// // Created by robin on 1/7/18. // #ifndef QDNSAGG_QDNSHEADER_H #define QDNSAGG_QDNSHEADER_H #include #include namespace QDNS { class QDnsHeader { public: QDnsHeader(); static QDnsHeader parse(const QByteArray& data); bool isValid() const; quint16 getId() const; void setId(quint16 id); quint16 getFlags() const; void setFlags(quint16 flags); void setFlagBits(quint8 bit, quint16 value, quint8 bitCount); quint16 getFlagBits(quint8 bit, quint8 bitCount) const; static quint8 getFlagBitIndex(quint8 bit); bool isQuery() const; void setIsQuery(bool isQuery); quint8 getOpcode() const; void setOpcode(quint8 opcode); bool isAuthoritative() const; void setIsAuthoritative(bool isAuthoritative); bool isTruncated() const; void setIsTruncated(bool isTruncated); bool isRecursionDesired() const; void setIsRecursionDesired(bool isRecursionDesired); bool isRecursionAvailable() const; void setIsRecursionAvailable(bool isRecursionAvailable); bool isAnswerAuthenticated() const; void setIsAnswerAuthenticated(bool isAnswerAuthenticated); bool isNonAuthenticatedAcceptable() const; void setNonAuthenticatedAcceptable(bool isNonAuthenticatedAcceptable); quint8 getReplyCode() const; void setReplyCode(quint8 replyCode); quint16 getQuestionCount() const; void setQuestionCount(quint16 questionCount); quint16 getAnswerCount() const; void setAnswerCount(quint16 answerCount); quint16 getAuthorityCount() const; void setAuthorityCount(quint16 authorityCount); quint16 getAdditionalCount() const; void setAdditionalCount(quint16 additionalCount); private: bool m_isValid; quint16 m_id; quint16 m_flags; quint16 m_questionCount; quint16 m_answerCount; quint16 m_authorityCount; quint16 m_additionalCount; }; } #endif //QDNSAGG_QDNSHEADER_H