Fawkes API Fawkes Development Version
addr_size.h
1
2/***************************************************************************
3 * addr_comp.h - address comparison
4 *
5 * Created: Tue Dec 13 15:17:43 2016
6 * Copyright 2006-2016 Tim Niemueller [www.niemueller.de]
7 *
8 ****************************************************************************/
9
10/* This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version. A runtime exception applies to
14 * this software (see LICENSE.GPL_WRE file mentioned below for details).
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Library General Public License for more details.
20 *
21 * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22 */
23
24#ifndef _NETCOMM_UTILS_ADDR_SIZE_H_
25#define _NETCOMM_UTILS_ADDR_SIZE_H_
26
27#include <netinet/in.h>
28#include <sys/socket.h>
29
30namespace fawkes {
31
32/** Get canonical size of sockaddr structure.
33 * @param a sockaddr_in or sockaddr_in6 structure with properly set
34 * address family field.
35 * @return size in bytes of struct
36 */
37inline size_t
38sock_addr_size(const struct sockaddr *a)
39{
40 if (a->sa_family == AF_INET) {
41 return sizeof(sockaddr_in);
42 } else if (a->sa_family == AF_INET6) {
43 return sizeof(sockaddr_in6);
44 } else {
45 return 0;
46 }
47}
48
49} // end namespace fawkes
50
51#endif
Fawkes library namespace.
size_t sock_addr_size(const struct sockaddr *a)
Get canonical size of sockaddr structure.
Definition: addr_size.h:38