4 /*#include <stdlib.h>*/
6 /*const int prio_to_ac[8] = {2,3,3,2,1,1,0,0};
7 const unsigned int ac_to_tos[4] = {224,160,96,64};
8 const char *ac_to_text[4] = {[AC_VO] = "AC_VO", [AC_VI] = "AC_VI",
9 [AC_BE] = "AC_BE", [AC_BK] = "AC_BK", };
12 inline void fwp_timespec_add (struct timespec *sum, const struct timespec *left,
13 const struct timespec *right)
15 sum->tv_sec = left->tv_sec + right->tv_sec;
16 sum->tv_nsec = left->tv_nsec + right->tv_nsec;
18 if (sum->tv_nsec >= 1000000000){
20 sum->tv_nsec -= 1000000000;
24 inline void fwp_timespec_sub (struct timespec *diff, const struct timespec *left,
25 const struct timespec *right)
27 diff->tv_sec = left->tv_sec - right->tv_sec;
28 diff->tv_nsec = left->tv_nsec - right->tv_nsec;
30 if (diff->tv_nsec < 0){
32 diff->tv_nsec += 1000000000;
36 int fwp_set_rt_prio(int priority)
39 static struct sched_param param;
41 if ((maxpri = sched_get_priority_max(SCHED_FIFO)) == -1) {
42 FWP_ERROR("sched_get_priority_max call failed: %s", strerror(errno));
46 if ((minpri = sched_get_priority_min(SCHED_FIFO)) == -1) {
47 FWP_ERROR("sched_get_priority_min call failed: %s", strerror(errno));
51 if (priority > maxpri) {
52 FWP_ERROR("parameter %d is greater than the maximal allowed priority %d.\n",
58 if (priority < minpri) {
59 FWP_ERROR(stderr,"priority parameter %d is lower than the minimal allowed priority %d.\n",
65 param.sched_priority = priority;
67 if (sched_setscheduler(0, SCHED_FIFO, ¶m) == -1) {
68 FWP_ERROR("sched_setscheduler call failed: %s", strerror(errno));
75 int fwp_create_unix_socket(char *path, struct sockaddr_un *addr)
79 if ((sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1){
80 FWP_ERROR("socket error: %s", strerror(errno));
84 bzero(addr, sizeof(addr));
85 addr->sun_family = AF_UNIX;
86 strcpy(addr->sun_path, path);
90 if (bind(sockfd, (struct sockaddr*)addr,
91 sizeof(*addr)) == -1) {
92 FWP_ERROR("fwp_open_unix_socket - bind error: %s", strerror(errno));
99 int fwp_create_inet_socket(unsigned int port, struct sockaddr_in *addr)
103 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1){
104 FWP_ERROR("socket error: %s", strerror(errno));
108 addr->sin_family = AF_INET;
109 addr->sin_addr.s_addr = INADDR_ANY;
110 addr->sin_port = htons(port);
112 if (bind(sockfd, (struct sockaddr*)addr,
113 sizeof(*addr)) == -1) {
115 FWP_ERROR("bind error: %s", strerror(errno));
122 /*void block_signals(void)
126 sigemptyset(&sigset);
127 sigaddset(&sigset, SIGINT);
128 sigaddset(&sigset, SIGTERM);
129 ret = pthread_sigmask(SIG_BLOCK, &sigset, NULL);
131 FWP_ERROR("pthread_sigmask failed: %s", strerror(errno));