nmsg  0.11.2
message.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009-2015 by Farsight Security, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef NMSG_MESSAGE_H
18 #define NMSG_MESSAGE_H
19 
20 #include <nmsg/msgmod.h>
21 
77 nmsg_message_t
78 nmsg_message_init(nmsg_msgmod_t mod);
79 
96 nmsg_message_t
97 nmsg_message_from_raw_payload(unsigned vid, unsigned msgtype,
98  uint8_t *data, size_t sz,
99  const struct timespec *ts);
100 
122 nmsg_res
123 nmsg_message_from_json(const char *json, nmsg_message_t *msg);
124 
130 void
131 nmsg_message_destroy(nmsg_message_t *msg);
132 
144 nmsg_res
145 nmsg_message_to_pres(nmsg_message_t msg, char **pres, const char *endline);
146 
157 nmsg_res
158 nmsg_message_to_json(nmsg_message_t msg, char **json);
159 
163 nmsg_msgmod_t
164 nmsg_message_get_msgmod(nmsg_message_t msg);
165 
169 nmsg_res
170 nmsg_message_add_allocation(nmsg_message_t msg, void *ptr);
171 
175 void
176 nmsg_message_free_allocations(nmsg_message_t msg);
177 
181 int32_t
182 nmsg_message_get_vid(nmsg_message_t msg);
183 
187 int32_t
188 nmsg_message_get_msgtype(nmsg_message_t msg);
189 
195 void *
196 nmsg_message_get_payload(nmsg_message_t msg);
197 
203 void
204 nmsg_message_update(nmsg_message_t msg);
205 
212 void
213 nmsg_message_compact_payload(nmsg_message_t msg);
214 
221 void
222 nmsg_message_get_time(nmsg_message_t msg, struct timespec *ts);
223 
231 void
232 nmsg_message_set_time(nmsg_message_t msg, const struct timespec *ts);
233 
238 uint32_t
239 nmsg_message_get_source(nmsg_message_t msg);
240 
245 uint32_t
246 nmsg_message_get_operator(nmsg_message_t msg);
247 
252 uint32_t
253 nmsg_message_get_group(nmsg_message_t msg);
254 
258 void
259 nmsg_message_set_source(nmsg_message_t msg, uint32_t source);
260 
264 void
265 nmsg_message_set_operator(nmsg_message_t msg, uint32_t operator_);
266 
270 void
271 nmsg_message_set_group(nmsg_message_t msg, uint32_t group);
272 
289 nmsg_res
290 nmsg_message_get_field(nmsg_message_t msg,
291  const char *field_name,
292  unsigned val_idx,
293  void **data,
294  size_t *len);
295 
300 nmsg_res
301 nmsg_message_get_field_by_idx(nmsg_message_t msg,
302  unsigned field_idx,
303  unsigned val_idx,
304  void **data,
305  size_t *len);
306 
314 nmsg_res
315 nmsg_message_get_field_idx(nmsg_message_t msg,
316  const char *field_name,
317  unsigned *idx);
318 
326 nmsg_res
327 nmsg_message_get_field_name(nmsg_message_t msg,
328  unsigned field_idx,
329  const char **field_name);
330 
339 nmsg_res
340 nmsg_message_get_field_flags(nmsg_message_t msg,
341  const char *field_name,
342  unsigned *flags);
343 
348 nmsg_res
349 nmsg_message_get_field_flags_by_idx(nmsg_message_t msg,
350  unsigned field_idx,
351  unsigned *flags);
352 
360 nmsg_res
361 nmsg_message_get_field_type(nmsg_message_t msg,
362  const char *field_name,
363  nmsg_msgmod_field_type *type);
364 
369 nmsg_res
370 nmsg_message_get_field_type_by_idx(nmsg_message_t msg,
371  unsigned field_idx,
372  nmsg_msgmod_field_type *type);
373 
380 nmsg_res
381 nmsg_message_get_num_fields(nmsg_message_t msg, size_t *n_fields);
382 
391 nmsg_res
392 nmsg_message_get_num_field_values(nmsg_message_t msg,
393  const char *field_name,
394  size_t *n_field_values);
395 
404 nmsg_res
406  unsigned field_idx,
407  size_t *n_field_values);
408 
420 nmsg_res
421 nmsg_message_set_field(nmsg_message_t msg,
422  const char *field_name,
423  unsigned val_idx,
424  const uint8_t *data,
425  size_t len);
426 
431 nmsg_res
432 nmsg_message_set_field_by_idx(nmsg_message_t msg,
433  unsigned field_idx,
434  unsigned val_idx,
435  const uint8_t *data,
436  size_t len);
437 
446 nmsg_res
447 nmsg_message_enum_name_to_value(nmsg_message_t msg, const char *field_name,
448  const char *name, unsigned *value);
449 
454 nmsg_res
455 nmsg_message_enum_name_to_value_by_idx(nmsg_message_t msg, unsigned field_idx,
456  const char *name, unsigned *value);
457 
466 nmsg_res
467 nmsg_message_enum_value_to_name(nmsg_message_t msg, const char *field_name,
468  unsigned value, const char **name);
469 
474 nmsg_res
475 nmsg_message_enum_value_to_name_by_idx(nmsg_message_t msg, unsigned field_idx,
476  unsigned value, const char **name);
477 
478 #endif /* NMSG_MESSAGE_H */
nmsg_res nmsg_message_enum_value_to_name(nmsg_message_t msg, const char *field_name, unsigned value, const char **name)
Convert a numeric enum value to a symbolic name.
int32_t nmsg_message_get_vid(nmsg_message_t msg)
Return the vendor ID of a message object.
nmsg_res nmsg_message_enum_value_to_name_by_idx(nmsg_message_t msg, unsigned field_idx, unsigned value, const char **name)
Convert a numeric enum value to a symoblic name.
nmsg_res
nmsg result code
Definition: res.h:25
nmsg_res nmsg_message_enum_name_to_value_by_idx(nmsg_message_t msg, unsigned field_idx, const char *name, unsigned *value)
Convert an enum name to a numeric value.
nmsg_res nmsg_message_get_num_fields(nmsg_message_t msg, size_t *n_fields)
Get the total number of possible fields that a message can contain.
void nmsg_message_compact_payload(nmsg_message_t msg)
WARNING: experts only.
void nmsg_message_set_group(nmsg_message_t msg, uint32_t group)
Set the group of a message object.
nmsg_res nmsg_message_get_num_field_values_by_idx(nmsg_message_t msg, unsigned field_idx, size_t *n_field_values)
Get the total number of field values that a message field contains.
nmsg_msgmod_t nmsg_message_get_msgmod(nmsg_message_t msg)
Return the message module object associated with a message object.
nmsg_res nmsg_message_get_field(nmsg_message_t msg, const char *field_name, unsigned val_idx, void **data, size_t *len)
Get the value of a field.
uint32_t nmsg_message_get_source(nmsg_message_t msg)
Get the source ID of a message object.
void nmsg_message_get_time(nmsg_message_t msg, struct timespec *ts)
Get the timestamp of a message object.
nmsg_res nmsg_message_get_field_flags_by_idx(nmsg_message_t msg, unsigned field_idx, unsigned *flags)
Get the flags associated with a field.
nmsg_res nmsg_message_to_json(nmsg_message_t msg, char **json)
Convert a message object to JSON format.
nmsg_res nmsg_message_set_field_by_idx(nmsg_message_t msg, unsigned field_idx, unsigned val_idx, const uint8_t *data, size_t len)
Set a field to the specified value.
nmsg_res nmsg_message_get_field_type(nmsg_message_t msg, const char *field_name, nmsg_msgmod_field_type *type)
Get the type of a field.
nmsg_msgmod_field_type
Enum mapping protocol buffer schema types to nmsg-specific types for "transparent" modules...
Definition: msgmod.h:71
void nmsg_message_destroy(nmsg_message_t *msg)
Destroy a message object and deallocate any resources associated with it.
nmsg_res nmsg_message_to_pres(nmsg_message_t msg, char **pres, const char *endline)
Convert a message object to presentation format.
uint32_t nmsg_message_get_operator(nmsg_message_t msg)
Get the operator of a message object.
nmsg_message_t nmsg_message_init(nmsg_msgmod_t mod)
Initialize a new, empty message object of a particular type.
nmsg_res nmsg_message_get_field_idx(nmsg_message_t msg, const char *field_name, unsigned *idx)
Get the field index of a named field.
void nmsg_message_free_allocations(nmsg_message_t msg)
Free all allocated objects associated with a message object.
nmsg_res nmsg_message_enum_name_to_value(nmsg_message_t msg, const char *field_name, const char *name, unsigned *value)
Convert an enum name to a numeric value.
void nmsg_message_set_time(nmsg_message_t msg, const struct timespec *ts)
Set the timestamp of a message object.
uint32_t nmsg_message_get_group(nmsg_message_t msg)
Get the group of a message object.
nmsg_res nmsg_message_get_field_by_idx(nmsg_message_t msg, unsigned field_idx, unsigned val_idx, void **data, size_t *len)
Get the value of a field.
nmsg_res nmsg_message_get_field_flags(nmsg_message_t msg, const char *field_name, unsigned *flags)
Get the flags associated with a field.
Message modules.
void * nmsg_message_get_payload(nmsg_message_t msg)
WARNING: experts only.
nmsg_res nmsg_message_get_field_name(nmsg_message_t msg, unsigned field_idx, const char **field_name)
Get the name of a field specified by index.
nmsg_message_t nmsg_message_from_raw_payload(unsigned vid, unsigned msgtype, uint8_t *data, size_t sz, const struct timespec *ts)
Initialize a new message object from an opaque payload blob.
nmsg_res nmsg_message_get_field_type_by_idx(nmsg_message_t msg, unsigned field_idx, nmsg_msgmod_field_type *type)
Get the type of a field.
nmsg_res nmsg_message_set_field(nmsg_message_t msg, const char *field_name, unsigned val_idx, const uint8_t *data, size_t len)
Set a field to the specified value.
void nmsg_message_set_source(nmsg_message_t msg, uint32_t source)
Set the source ID of a message object.
int32_t nmsg_message_get_msgtype(nmsg_message_t msg)
Return the message type of a message object.
nmsg_res nmsg_message_from_json(const char *json, nmsg_message_t *msg)
Convert a JSON format line to an NMSG payload.
void nmsg_message_set_operator(nmsg_message_t msg, uint32_t operator_)
Set the operator of a message object.
nmsg_res nmsg_message_add_allocation(nmsg_message_t msg, void *ptr)
Add an allocated object to a message object.
nmsg_res nmsg_message_get_num_field_values(nmsg_message_t msg, const char *field_name, size_t *n_field_values)
Get the total number of field values that a message field contains.
void nmsg_message_update(nmsg_message_t msg)
WARNING: experts only.