This file is indexed.

/usr/include/sipwitch/uri.h is in libsipwitch-dev 1.9.15-3.

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
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// Copyright (C) 2006-2014 David Sugar, Tycho Softworks.
// Copyright (C) 2015 Cherokees of Idaho.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Manipulate address strings.
 * This is a utility class to help manipulate addresses and SIP uri's or
 * to resolve uri's into physical addresses.  SIP Witch prefers physical
 * (ip) addresses to avoid redundent dns lookups.  This is also placed in
 * common to better support plugin development.
 * @file sipwitch/uri.h
 */

#ifndef _SIPWITCH_URI_H_
#define _SIPWITCH_URI_H_

#ifndef _UCOMMON_STRING_H_
#include <ucommon/string.h>
#endif

#ifndef _UCOMMON_PLATFORM_H_
#include <ucommon/platform.h>
#endif

#ifndef _UCOMMON_SOCKET_H_
#include <ucommon/socket.h>
#endif

#ifndef __SIPWITCH_NAMESPACE_H_
#include <sipwitch/namespace.h>
#endif

#ifndef __SIPWITCH_VOIP_H_
#include <sipwitch/voip.h>
#endif

namespace sipwitch {

/**
 * Some convenience methods for manipulating SIP uri's.
 * @author David Sugar <dyfet@gnutelephony.org>
 */
class __EXPORT uri
{
public:
    static voip::context_t route(const char *uri, char *buf, size_t size);
    static void serviceid(const char *sipuri, char *buffer, size_t size);
    static bool server(struct sockaddr *address, char *buffer, size_t size);
    static bool userid(const char *sipuri, char *buffer, size_t size);
    static bool hostid(const char *sipuri, char *buffer, size_t size);
    static unsigned short portid(const char *sipuri);
    static void identity(const struct sockaddr *address, char *buffer, const char *user, size_t size);
    static void publish(const char *uri, char *buffer, const char *user, size_t size);
    static voip::context_t context(const char *uri);
};

class __EXPORT srv : protected Socket::address
{
public:
    class address
    {
    public:
	    struct sockaddr_storage addr;
	    uint16_t weight, priority;
    };

protected:
    address *srvlist;
    struct sockaddr *entry;
    uint16_t pri;
    unsigned count;

public:
    srv(const char *uri);
    srv();
    ~srv();

    void set(const char *uri);

    void clear(void);

    inline struct sockaddr *operator*() const
        {return entry;}

    inline operator bool() const
	    {return entry != NULL;}

    inline bool operator!() const
	    {return entry == NULL;}

    struct sockaddr *next(void);

    uint16_t after(uint16_t priority = 0);

    uint32_t total(uint16_t priority);

    struct sockaddr *find(uint16_t priority, uint32_t weight);

    voip::context_t route(const char *uri, char *buf, size_t size);

};

} // namespace sipwitch

#endif