LCOV - code coverage report
Current view: top level - lib/dnssd/minimal_mdns - RecordData.h (source / functions) Hit Total Coverage
Test: lcov_final.info Lines: 4 4 100.0 %
Date: 2024-02-15 08:20:41 Functions: 4 5 80.0 %

          Line data    Source code
       1             : /*
       2             :  *
       3             :  *    Copyright (c) 2020 Project CHIP Authors
       4             :  *
       5             :  *    Licensed under the Apache License, Version 2.0 (the "License");
       6             :  *    you may not use this file except in compliance with the License.
       7             :  *    You may obtain a copy of the License at
       8             :  *
       9             :  *        http://www.apache.org/licenses/LICENSE-2.0
      10             :  *
      11             :  *    Unless required by applicable law or agreed to in writing, software
      12             :  *    distributed under the License is distributed on an "AS IS" BASIS,
      13             :  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      14             :  *    See the License for the specific language governing permissions and
      15             :  *    limitations under the License.
      16             :  */
      17             : 
      18             : #pragma once
      19             : 
      20             : #include <inet/IPAddress.h>
      21             : 
      22             : #include <lib/dnssd/minimal_mdns/core/BytesRange.h>
      23             : #include <lib/dnssd/minimal_mdns/core/QName.h>
      24             : 
      25             : namespace mdns {
      26             : namespace Minimal {
      27             : 
      28             : class TxtRecordDelegate
      29             : {
      30             : public:
      31          67 :     virtual ~TxtRecordDelegate() {}
      32             : 
      33             :     /// Reports that a record was found
      34             :     ///
      35             :     /// name is mandatory
      36             :     /// value will be empty if '=' is missing in the TXT record. I.e code does
      37             :     /// *NOT* differentiate between "foo=" and "foo" as record.
      38             :     virtual void OnRecord(const BytesRange & name, const BytesRange & value) = 0;
      39             : };
      40             : 
      41             : /// Parses TXT record data
      42             : /// https://tools.ietf.org/html/rfc1035 (included in base RFC)
      43             : bool ParseTxtRecord(const BytesRange & data, TxtRecordDelegate * callback);
      44             : 
      45             : /// Parses SRV record data
      46             : /// https://tools.ietf.org/html/rfc2782
      47             : class SrvRecord
      48             : {
      49             : public:
      50          32 :     SrvRecord() {}
      51             : 
      52             :     /// Parses a SRV record within [data]
      53             :     ///
      54             :     /// [packet] specifies the range of valid data for PTR addresses within
      55             :     /// the name
      56             :     bool Parse(const BytesRange & data, const BytesRange & packet);
      57             : 
      58             :     uint16_t GetPriority() const { return mPriority; }
      59             :     uint16_t GetWeight() const { return mWeight; }
      60          38 :     uint16_t GetPort() const { return mPort; }
      61          76 :     SerializedQNameIterator GetName() const { return mName; }
      62             : 
      63             : private:
      64             :     uint16_t mPriority = 0;
      65             :     uint16_t mWeight   = 0;
      66             :     uint16_t mPort     = 0;
      67             :     SerializedQNameIterator mName;
      68             : };
      69             : 
      70             : /// Parses an IPV4 (A) record data
      71             : /// https://tools.ietf.org/html/rfc1035 (included in base RFC)
      72             : bool ParseARecord(const BytesRange & data, chip::Inet::IPAddress * addr);
      73             : 
      74             : /// Parses an IPV6 (AAAA) record data
      75             : /// https://tools.ietf.org/html/rfc3596
      76             : bool ParseAAAARecord(const BytesRange & data, chip::Inet::IPAddress * addr);
      77             : 
      78             : /// Parses a PTR record data
      79             : /// https://tools.ietf.org/html/rfc1035 (included in base RFC)
      80             : bool ParsePtrRecord(const BytesRange & data, const BytesRange & packet, SerializedQNameIterator * name);
      81             : 
      82             : } // namespace Minimal
      83             : 
      84             : } // namespace mdns

Generated by: LCOV version 1.14