This file is indexed.

/usr/include/sipxtapi/net/SipContactDb.h is in libsipxtapi-dev 3.3.0~test17-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
 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
//
// Copyright (C) 2004-2006 SIPfoundry Inc.
// Licensed by SIPfoundry under the LGPL license.
//
// Copyright (C) 2004-2006 Pingtel Corp.  All rights reserved.
// Licensed to SIPfoundry under a Contributor Agreement.
//
// $$
///////////////////////////////////////////////////////////////////////////////


#ifndef _SipContactDb_h_
#define _SipContactDb_h_

// SYSTEM INCLUDES
//#include <...>
#include <utl/UtlString.h>
#include <utl/UtlHashMap.h>
#include <os/OsMutex.h>
#include <os/OsSocket.h>
#include "tapi/sipXtapi.h"

// APPLICATION INCLUDES
// DEFINES
// MACROS
// EXTERNAL FUNCTIONS
// EXTERNAL VARIABLES
// CONSTANTS
// STRUCTS
// TYPEDEFS



// FORWARD DECLARATIONS

class SipContactDb
{
/* //////////////////////////// PUBLIC //////////////////////////////////// */
public:

/* ============================ CREATORS ================================== */
    SipContactDb();

    virtual
    ~SipContactDb();

    /**
     * Inserts a contact into the contact table.  Fails if there is
     * already an entry with the same port and IP address.
     * If the ID of the incoming CONTACT_ADDRESS is less that 1,
     * which it should be, then this method will assign
     * a contact id.
     * @param contact Reference to a contact structure, which will be
     *        copied, and the copy will be added to the DB.
     */   
    const bool addContact(SIPX_CONTACT_ADDRESS& contact);


    /**
     * Searches for a similar contact and the datebase and updates the
     * address/port.
     * 
     * @param contact Reference to a contact structure
     */   
    const bool updateContact(SIPX_CONTACT_ADDRESS& contact);

    /**
     * Removes a contact record from the DB.  
     *
     * @param id Key value (the contact id) used to find
     *        a matching record for deletion.
     */
    const bool deleteContact(const SIPX_CONTACT_ID id);
    
    /** 
     * Finds a contact in the DB, by SIPX_CONTACT_ID.
     *
     * @param id The SIPX_CONTACT_ID of the record to find.
     */
    SIPX_CONTACT_ADDRESS* find(SIPX_CONTACT_ID id);

    /** 
     * Finds a contact in the DB, by IP address.
     *
     * @param id The IP Address of the record to find.
     */    
	SIPX_CONTACT_ADDRESS* find(const UtlString szIpAddress, const int port, SIPX_CONTACT_TYPE type);

    /**
     * Finds the first contact by a given contact type
     */
    SIPX_CONTACT_ADDRESS* findByType(SIPX_CONTACT_TYPE type, SIPX_TRANSPORT_TYPE transportType, UtlString sCustomTransport = "") ;

    /**
     * Return a transport type given the specified transport name.  The name 
     * could be tls, tcp, udp, or a custom transport type.
     */
    SIPX_TRANSPORT_TYPE findTransportType(const char* transportName) ;

    /*
     * Find the local contact from a contact id.
     */
    SIPX_CONTACT_ADDRESS* getLocalContact(SIPX_CONTACT_ID id) ;
    
    /**
     * Populates a CONTACT_ADDRESS array with all of the contacts
     * stored in this DB.
     *
     * @param contacts Pre-allocated array of CONTACT_ADDRESS pointers.
              Should be allocated using the MAX_IP_ADDRESSES for the size.
     * @param actualNum The number of contacts.
     */
    void getAll(SIPX_CONTACT_ADDRESS* contacts[], int& actualNum) const;
    
    
    /**
     * Populates a CONTACT_ADDRESS array with all of the contacts
     * stored in this DB that match a particular adapter name.
     *
     * @param contacts Pre-allocated array of CONTACT_ADDRESS pointers.
              Should be allocated using the MAX_IP_ADDRESSES for the size.
     * @param szAdapter Adapter name for which to look-up contacts.
     * @param actualNum The number of contacts.
     */
    void getAllForAdapter(const SIPX_CONTACT_ADDRESS* contacts[],
                          const char* szAdapter,
                          int& actualNum,
                          SIPX_CONTACT_TYPE typeFilter = CONTACT_ALL) const;
                                    
    const bool getRecordForAdapter(SIPX_CONTACT_ADDRESS& contact,
                                   const char* szAdapter,
                                   const SIPX_CONTACT_TYPE contactFilter) const;

    const bool getRecordForAdapter(SIPX_CONTACT_ADDRESS& contact,
                                   const char* szAdapter,
                                   const SIPX_CONTACT_TYPE contactFilter,
                                   const SIPX_TRANSPORT_TYPE transportFilter) const;

    
    void replicateForTransport(const SIPX_TRANSPORT_TYPE originalTransport, 
                               const SIPX_TRANSPORT_TYPE newTransport,
                               const char* szTransport,
                               const char* szRoutingID);

    void removeForTransport(const SIPX_TRANSPORT_TYPE transport);

    void dump(UtlString& output) ;

/* ============================ MANIPULATORS ============================== */

    void enableTurn(bool bEnable) ;


/* ============================ ACCESSORS ================================= */


/* ============================ INQUIRY =================================== */


/* //////////////////////////// PROTECTED ///////////////////////////////// */
protected:



/* //////////////////////////// PRIVATE /////////////////////////////////// */
private:

    /** Disabled copy constructor */
    SipContactDb(const SipContactDb& rSipContactDb);

    //** Disabled assignment operator */
    SipContactDb& operator=(const SipContactDb& rhs);
    
    /** Checks this database for a duplicate record by key */
    const bool isDuplicate(const SIPX_CONTACT_ID id);
    
    /** Checks this database for a duplicate record by ipAddress and port */
    const bool isDuplicate(const UtlString& ipAddress, const int port, SIPX_CONTACT_TYPE type, SIPX_TRANSPORT_TYPE transportType);

    /**
     * Given a contact record containing an ID which is set
     * to a value less than 1, this method will generate a contact 
     * ID.
     * 
     * @param contact Reference to the CONTACT_ADDRESS object to be
     *        modified.
     */
    const bool assignContactId(SIPX_CONTACT_ADDRESS& contact);

    /** hash map storage for contact information, keyed by Contact Record ID */
    UtlHashMap mContacts;   

    int mNextContactId;
    
    mutable OsMutex mLock;

    bool mbTurnEnabled ;
};

/* ============================ INLINE METHODS ============================ */

#endif  // _SipContactDb_h_