Module: kamailio
Branch: 5.0
Commit: 6c99d6bf7c3372fbc5484c5b8664eba988a0edfd
URL: https://github.com/kamailio/kamailio/commit/6c99d6bf7c3372fbc5484c5b8664eba…
Author: Edwin Fine <edwin(a)2600hz.com>
Committer: Henning Westerholt <hw(a)kamailio.org>
Date: 2018-06-14T08:37:18+02:00
core: fix Makefile.defs errors to include raw socket support
Compiling kamailio on `linux`, `gnu_kfreebsd`, and `freebsd` -
unless `RAW_SOCKS` is set up otherwise -
should automatically enable raw sockets, according to `Makefile.defs`
[L97][]:
# enable raw sockets
RAW_SOCKS ?= yes
ifeq ($(RAW_SOCKS),1)
RAW_SOCKS = yes
endif
By all indications, if `RAW_SOCKS` is unset, set to `1`, or set to `yes`
before this `ifeq` statement, it will be set to `yes` after the `endif`.
The issue arises later on in `Makefile.defs` [L1758][] (and also
[L1808][] and [L1892]):
#os specific stuff
ifeq ($(OS), linux)
# by default use futexes if available
use_futex= yes
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN
ifneq ($(RAW_SOCKS), yes) ### <--- The issue ###
C_DEFS+= -DUSE_RAW_SOCKS
endif
Clearly, the `ifneq` should be `ifeq`.
This commit fixes the issue by making the above changes, and `kamailio`
should compile on Linux - by default - with raw sockets support unless
`RAW_SOCKS` is explicitly set prior to evaluation to something other
than `yes` or `1`.
[L97]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1758]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1808]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1892]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
(cherry picked from commit 1d4ee7720c6f609077e4497189103f9a950f4194)
---
Modified: src/Makefile.defs
---
Diff: https://github.com/kamailio/kamailio/commit/6c99d6bf7c3372fbc5484c5b8664eba…
Patch: https://github.com/kamailio/kamailio/commit/6c99d6bf7c3372fbc5484c5b8664eba…
---
diff --git a/src/Makefile.defs b/src/Makefile.defs
index a0ed23218b..dbf6191e8c 100644
--- a/src/Makefile.defs
+++ b/src/Makefile.defs
@@ -1755,7 +1755,7 @@ ifeq ($(OS), linux)
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
@@ -1805,7 +1805,7 @@ ifeq ($(OS), gnu_kfreebsd)
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
@@ -1889,7 +1889,7 @@ ifeq ($(OS), freebsd)
-DHAVE_SCHED_YIELD -DHAVE_MSGHDR_MSG_CONTROL \
-DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM \
-DHAVE_NETINET_IN_SYSTM -DHAVE_IP_MREQN
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
Module: kamailio
Branch: 5.1
Commit: a04c931064d1332a7c23264a33268d3ecec793a2
URL: https://github.com/kamailio/kamailio/commit/a04c931064d1332a7c23264a33268d3…
Author: Edwin Fine <edwin(a)2600hz.com>
Committer: Henning Westerholt <hw(a)kamailio.org>
Date: 2018-06-14T08:36:14+02:00
core: fix Makefile.defs errors to include raw socket support
Compiling kamailio on `linux`, `gnu_kfreebsd`, and `freebsd` -
unless `RAW_SOCKS` is set up otherwise -
should automatically enable raw sockets, according to `Makefile.defs`
[L97][]:
# enable raw sockets
RAW_SOCKS ?= yes
ifeq ($(RAW_SOCKS),1)
RAW_SOCKS = yes
endif
By all indications, if `RAW_SOCKS` is unset, set to `1`, or set to `yes`
before this `ifeq` statement, it will be set to `yes` after the `endif`.
The issue arises later on in `Makefile.defs` [L1758][] (and also
[L1808][] and [L1892]):
#os specific stuff
ifeq ($(OS), linux)
# by default use futexes if available
use_futex= yes
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN
ifneq ($(RAW_SOCKS), yes) ### <--- The issue ###
C_DEFS+= -DUSE_RAW_SOCKS
endif
Clearly, the `ifneq` should be `ifeq`.
This commit fixes the issue by making the above changes, and `kamailio`
should compile on Linux - by default - with raw sockets support unless
`RAW_SOCKS` is explicitly set prior to evaluation to something other
than `yes` or `1`.
[L97]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1758]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1808]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1892]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
(cherry picked from commit 1d4ee7720c6f609077e4497189103f9a950f4194)
---
Modified: src/Makefile.defs
---
Diff: https://github.com/kamailio/kamailio/commit/a04c931064d1332a7c23264a33268d3…
Patch: https://github.com/kamailio/kamailio/commit/a04c931064d1332a7c23264a33268d3…
---
diff --git a/src/Makefile.defs b/src/Makefile.defs
index 3b1066da95..9b809b8bfa 100644
--- a/src/Makefile.defs
+++ b/src/Makefile.defs
@@ -1755,7 +1755,7 @@ ifeq ($(OS), linux)
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
@@ -1805,7 +1805,7 @@ ifeq ($(OS), gnu_kfreebsd)
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
@@ -1889,7 +1889,7 @@ ifeq ($(OS), freebsd)
-DHAVE_SCHED_YIELD -DHAVE_MSGHDR_MSG_CONTROL \
-DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM \
-DHAVE_NETINET_IN_SYSTM -DHAVE_IP_MREQN
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
### Description
Kamailio compiles without raw sockets support, even though `src/Makefile.defs` should enable that by default, according to the Makefile.
### Troubleshooting
Not applicable.
#### Reproduction
Build kamailio on Debian 8.10 Linux using the standard `Makefile.defs`, and add `udp4_raw = 0` to the config file. You should get the warning shown in the log message provided below.
#### Debugging Data
Not applicable
#### Log Messages
```
kamailio[89847]: WARNING: <core> [core/cfg.y:3427]: warn_at(): warning in config file <redacted>, line 66, column 12: raw socket support not compiled in
```
#### SIP Traffic
Not Applicable
### Possible Solutions
This is the solution proposed in PR #1564.
```
diff --git a/src/Makefile.defs b/src/Makefile.defs
index 428a236..3a2480c 100644
--- a/src/Makefile.defs
+++ b/src/Makefile.defs
@@ -1755,7 +1755,7 @@ ifeq ($(OS), linux)
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
```
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
version: kamailio 5.1.3 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 4.9.2
```
* **Operating System**:
```
Debian 8.10
Kernel 3.16.0-4-amd64 #1 SMP Debian 3.16.51-3 (2017-12-13) x86_64 GNU/Linux
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/1565
#### Pre-Submission Checklist
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [x] Small bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
- [ ] PR should be backported to stable branches
- [ ] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
Compiling kamailio on Linux, unless `RAW_SOCKS` is set up otherwise,
should automatically enable raw sockets, according to `Makefile.defs`
[L97][]:
# enable raw sockets
RAW_SOCKS ?= yes
ifeq ($(RAW_SOCKS),1)
RAW_SOCKS = yes
endif
By all indications, if `RAW_SOCKS` is unset, set to `1`, or set to `yes`
before this `ifeq` statement, it will be set to `yes` after the `endif`.
The issue arises later on in `Makefile.defs` [L1758][]:
#os specific stuff
ifeq ($(OS), linux)
# by default use futexes if available
use_futex= yes
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN
ifneq ($(RAW_SOCKS), yes) ### <--- The issue ###
C_DEFS+= -DUSE_RAW_SOCKS
endif
Clearly, the `ifneq` should be `ifeq`.
This commit fixes the issue by making the above change, and `kamailio`
should compile on Linux - by default - with raw sockets support unless
`RAW_SOCKS` is explicitly set prior to evaluation to something other
than `yes` or `1`.
[L97]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1758]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/1564
-- Commit Summary --
* core: fix Makefile.defs error to include raw socket support
-- File Changes --
M src/Makefile.defs (2)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/1564.patchhttps://github.com/kamailio/kamailio/pull/1564.diff
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/1564
Module: kamailio
Branch: master
Commit: 1d4ee7720c6f609077e4497189103f9a950f4194
URL: https://github.com/kamailio/kamailio/commit/1d4ee7720c6f609077e4497189103f9…
Author: Edwin Fine <edwin(a)2600hz.com>
Committer: Henning Westerholt <henningw(a)users.noreply.github.com>
Date: 2018-06-14T08:22:49+02:00
core: fix Makefile.defs errors to include raw socket support
Compiling kamailio on `linux`, `gnu_kfreebsd`, and `freebsd` -
unless `RAW_SOCKS` is set up otherwise -
should automatically enable raw sockets, according to `Makefile.defs`
[L97][]:
# enable raw sockets
RAW_SOCKS ?= yes
ifeq ($(RAW_SOCKS),1)
RAW_SOCKS = yes
endif
By all indications, if `RAW_SOCKS` is unset, set to `1`, or set to `yes`
before this `ifeq` statement, it will be set to `yes` after the `endif`.
The issue arises later on in `Makefile.defs` [L1758][] (and also
[L1808][] and [L1892]):
#os specific stuff
ifeq ($(OS), linux)
# by default use futexes if available
use_futex= yes
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN
ifneq ($(RAW_SOCKS), yes) ### <--- The issue ###
C_DEFS+= -DUSE_RAW_SOCKS
endif
Clearly, the `ifneq` should be `ifeq`.
This commit fixes the issue by making the above changes, and `kamailio`
should compile on Linux - by default - with raw sockets support unless
`RAW_SOCKS` is explicitly set prior to evaluation to something other
than `yes` or `1`.
[L97]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1758]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1808]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
[L1892]: https://github.com/kamailio/kamailio/blob/a57a96f8fea3a5f7bff068ab0ea0d4c17…
---
Modified: src/Makefile.defs
---
Diff: https://github.com/kamailio/kamailio/commit/1d4ee7720c6f609077e4497189103f9…
Patch: https://github.com/kamailio/kamailio/commit/1d4ee7720c6f609077e4497189103f9…
---
diff --git a/src/Makefile.defs b/src/Makefile.defs
index 428a23674a..8e76de7687 100644
--- a/src/Makefile.defs
+++ b/src/Makefile.defs
@@ -1755,7 +1755,7 @@ ifeq ($(OS), linux)
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
@@ -1805,7 +1805,7 @@ ifeq ($(OS), gnu_kfreebsd)
C_DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)
@@ -1889,7 +1889,7 @@ ifeq ($(OS), freebsd)
-DHAVE_SCHED_YIELD -DHAVE_MSGHDR_MSG_CONTROL \
-DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM \
-DHAVE_NETINET_IN_SYSTM -DHAVE_IP_MREQN
- ifneq ($(RAW_SOCKS), yes)
+ ifeq ($(RAW_SOCKS), yes)
C_DEFS+= -DUSE_RAW_SOCKS
endif
ifneq ($(found_lock_method), yes)