This file is indexed.

/usr/include/sofia-sip-1.12/sofia-sip/msg.h is in libsofia-sip-ua-dev 1.12.11+20110422.1-2ubuntu1.

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
/*
 * This file is part of the Sofia-SIP package
 *
 * Copyright (C) 2005 Nokia Corporation.
 *
 * Contact: Pekka Pessi <pekka.pessi@nokia.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA
 *
 */

#ifndef MSG_H
/** Defined when <sofia-sip/msg.h> has been included */
#define MSG_H
/**@file sofia-sip/msg.h
 *
 * Base message interface.
 *
 * @author Pekka Pessi <Pekka.Pessi@nokia.com>
 *
 * @date Created: Fri Feb 18 08:54:48 2000 ppessi
 */

#include <sofia-sip/msg_types.h>
#include <sofia-sip/su_alloc.h>

SOFIA_BEGIN_DECLS

SOFIAPUBFUN msg_t *msg_create(msg_mclass_t const *mc, int flags);

SOFIAPUBFUN msg_t *msg_ref(msg_t *);
SOFIAPUBFUN void msg_unref(msg_t *);

SOFIAPUBFUN void msg_destroy(msg_t *);

SOFIAPUBFUN msg_t *msg_copy(msg_t *);
SOFIAPUBFUN msg_t *msg_dup(msg_t const *);

SOFIAPUBFUN msg_t *msg_make(msg_mclass_t const *mc, int flags,
			    void const *data, ssize_t len);
SOFIAPUBFUN char *msg_as_string(su_home_t *home,
				msg_t *msg, msg_pub_t *pub, int flags,
				size_t *return_len);

SOFIAPUBFUN void msg_set_parent(msg_t *kid, msg_t *dad);

SOFIAPUBFUN msg_t *msg_ref_create(msg_t *);
SOFIAPUBFUN void msg_ref_destroy(msg_t *);

SOFIAPUBFUN msg_pub_t *msg_public(msg_t const *msg, void *tag);
SOFIAPUBFUN msg_pub_t *msg_object(msg_t const *msg);
SOFIAPUBFUN msg_mclass_t const *msg_mclass(msg_t const *msg);

SOFIAPUBFUN int msg_extract(msg_t *msg);
SOFIAPUBFUN unsigned msg_extract_errors(msg_t const *msg);
SOFIAPUBFUN int msg_is_complete(msg_t const *msg);
SOFIAPUBFUN int msg_has_error(msg_t const *msg);
SOFIAPUBFUN msg_header_t **msg_chain_head(msg_t const *msg);

SOFIAPUBFUN int msg_serialize(msg_t *msg, msg_pub_t *mo);
SOFIAPUBFUN int msg_prepare(msg_t *msg);
SOFIAPUBFUN void msg_unprepare(msg_t *msg);
SOFIAPUBFUN int msg_is_prepared(msg_t const *msg);

SOFIAPUBFUN usize_t msg_size(msg_t const *msg);
SOFIAPUBFUN usize_t msg_maxsize(msg_t *msg, usize_t maxsize);

/** Cast a #msg_t pointer to a #su_home_t pointer. */
#define msg_home(h) ((su_home_t*)(h))

/** Streaming state of a #msg_t object. */
enum msg_streaming_status {
  /** Disable streaming */
  msg_stop_streaming = 0,
  /** Enable streaming */
  msg_start_streaming = 1
};

SOFIAPUBFUN int msg_is_streaming(msg_t const *msg);
SOFIAPUBFUN void msg_set_streaming(msg_t *msg, enum msg_streaming_status what);

SOFIAPUBFUN unsigned msg_mark_as_complete(msg_t *msg, unsigned mask);

SOFIAPUBFUN unsigned msg_get_flags(msg_t const *msg, unsigned mask);
SOFIAPUBFUN unsigned msg_set_flags(msg_t *msg, unsigned mask);
SOFIAPUBFUN unsigned msg_zap_flags(msg_t *msg, unsigned mask);

/** Flags controlling parser/printer. */
enum msg_flg_user {
  /** Use compact form when printing. */
  MSG_FLG_COMPACT = (1<<0),
  /** Use canonic representation when printing. */
  MSG_FLG_CANONIC = (1<<1),
  /** Cache a copy of headers when parsing. */
  MSG_FLG_EXTRACT_COPY = (1<<2),
  /** Print comma-separated lists instead of separate headers */
  MSG_FLG_COMMA_LISTS = (1<<3),

  /**Use mailbox format when parsing - in mailbox format
   * message has no body unless Content-Length header is present.
   */
  MSG_FLG_MAILBOX = (1<<4),

  /** Use multiple parts for message body */
  MSG_FLG_CHUNKING = (1<<5),

  /** Enable streaming - parser gives completed message fragments when they
   * are ready to upper layers */
  MSG_FLG_STREAMING = (1<<6),

  /** Make messages threadsafe. */
  MSG_FLG_THRDSAFE = (1<<15),

  MSG_FLG_USERMASK = (1<<16) - 1
};

/** Flags used by parser. */
enum  msg_flg_parser {
  /** Extract headers for this message */
  MSG_FLG_HEADERS = (1<<16),
  /** Extract body for this message */
  MSG_FLG_BODY = (1<<17),
  /** Extract chunks for this message */
  MSG_FLG_CHUNKS = (1<<18),
  /** Extract trailers for this message */
  MSG_FLG_TRAILERS = (1<<19),
  /** Extract last component of this message */
  MSG_FLG_FRAGS = (1<<20),
  /** This message has been completely extracted */
  MSG_FLG_COMPLETE = (1<<24),

  /** This message has parsing errors */
  MSG_FLG_ERROR = (1<<25),
  /** This message is too large */
  MSG_FLG_TOOLARGE = (1<<26),
  /** This message is truncated */
  MSG_FLG_TRUNC = (1<<27),
  /** This message has timeout */
  MSG_FLG_TIMEOUT = (1<<28),

  MSG_FLG_PARSERMASK = ((-1) ^ ((1<<16) - 1))
};

#define MSG_DO_COMPACT      MSG_FLG_COMPACT
#define MSG_DO_CANONIC      MSG_FLG_CANONIC
#define MSG_DO_EXTRACT_COPY MSG_FLG_EXTRACT_COPY

/** Test if all the flags in @a v are set in @a f. */
#define MSG_FLAGS(f, v) (((f) & (v)) == v)

#define MSG_IS_COMPACT(f)      MSG_FLAGS((f), MSG_FLG_COMPACT)
#define MSG_IS_CANONIC(f)      MSG_FLAGS((f), MSG_FLG_CANONIC)
#define MSG_IS_EXTRACT_COPY(f) MSG_FLAGS((f), MSG_FLG_EXTRACT_COPY)
#define MSG_IS_COMMA_LISTS(f)  MSG_FLAGS((f), MSG_FLG_COMMA_LISTS)
#define MSG_IS_MAILBOX(f)      MSG_FLAGS((f), MSG_FLG_MAILBOX)

#define MSG_HAS_COMPLETE(f)    MSG_FLAGS((f), MSG_FLG_COMPLETE)
#define MSG_HAS_ERROR(f)       MSG_FLAGS((f), MSG_FLG_ERROR)

#define MSG_IS_COMPLETE(mo) (((mo)->msg_flags & MSG_FLG_COMPLETE) != 0)

SOFIA_END_DECLS

#endif /* MSG_H */