This file is indexed.

/usr/include/bobcat/cidr is in libbobcat-dev 4.04.00-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#ifndef _INCLUDED_BOBCAT_CIDR_
#define _INCLUDED_BOBCAT_CIDR_

#include <string>
#include <iosfwd>
#include <vector>

#include <bobcat/x2a>

namespace FBB
{

class Pattern;

class Cidr
{
    typedef std::pair<size_t, size_t> MaskPair;     // 1st address, mask value
    typedef std::vector<MaskPair> VectorMaskP;

    VectorMaskP d_cidr;
    VectorMaskP::const_iterator d_iter;

    std::string d_matched;                          // address matched last
    size_t d_last;                                  // last address in CIDR

    public:
        Cidr() = default;
        Cidr(std::string const &cidrPattern);       // 1 one pattern to check
        Cidr(std::istream &cidrStream);             // 2 stream of patterns
        Cidr(Cidr &&tmp);                           // 3

        Cidr &operator=(Cidr const &rhs) = default;
        Cidr &operator=(Cidr &&tmp);

            // all lines of 'in' are inspected for ip addresses matching
            // any cidr-specification in d_cidr
        bool match(std::istream &in);           // 1 true means: match found
        bool match(std::string const &line);    // 2 match a single line

        void setCidr(std::string const &cidrPattern);   // 1
        void setCidr(std::istream &cidrStream);         // 2

        // following a successful match the following members return
        // dotted decimal addresses / maskvalues as strings
        std::string cidr() const;           // CIDR containing address()
        std::string const &address() const; // .f the address matching a CIDR
        std::string mask() const;           // .f the mask used by cidr()
        std::string first() const;          // .f the 1st address in cidr()
        std::string last() const;           // .f the last address in cidr()

                                                // convert "a.b.c.d" to
                                                // 32-bits value
        static size_t dotted2binary(std::string const &dotted);
                                                // reverse operation
        static std::string binary2dotted(size_t binary);

    private:
        bool matchLine(std::string const &line);
        MaskPair parse(std::string const &cidrPattern);
        void pushCidr(std::string const &cidrPattern);
        bool compare(MaskPair const &mp, std::string const &address);
};

inline std::string const &Cidr::address() const
{
    return d_matched;
}
inline std::string Cidr::mask() const
{
    return X2a(d_iter->second);
}
inline std::string Cidr::first() const
{
    return binary2dotted(d_iter->first);
}
inline std::string Cidr::last() const
{
    return binary2dotted(d_last);
}

}   // namespace FBB


#endif