The rtpengine kernel module only cares about UDP packets, so narrow down
our iptables rule accordingly.
Change-Id: I33856efa6b39372104b05ec0dc6f34ad0b5e0cbd
There might be a firewall script that installs and manages the
xt_RTPENGINE rules even if rtpengine isn't running at the point. Leave
the module loaded if possible and unload it only for a package removal
or upgrade.
Change-Id: I5a35e965379aebd757a45883f82bbcb5fa2412e8
Log lines written to stderr that are consumed by journald will already
have timestamps added to them. Drop the redundant unixtime output for
this use case.
Change-Id: I34886a69a0ef90de2eb84ee8f446cbad624302c1
This service should be stopped when we disable the ngcp-recording-daemon,
but ngcp-service has logic to skip services of Type oneshot.
In this case turning it into a Type=simple is fine because even though
there are no daemons/programs remaining after execution, we do set
RemainAfterExit=yes explicitly.
Change-Id: I3bde666ae1ed19ac56d38b3e011714e66615a378
These are names used in the ngcp-service nsservices.yml file, adding
them here makes using the system more consistent.
Change-Id: I66b0149cbfe70d2260a6c50617a52e53604256da
Move the Debian specific cleaning into a debian/clean file to avoid
having to add an override. And rely on the upstream Makefile which
should always be doing the correct job.
Change-Id: I6eb554428eafdcad13ea0490fca745ae72390f9c
The dh_clean -k is an obsolete way to specify dh_prep, the last one
should not be executed so remove it.
Change-Id: I9d244fbe410acac8751b6d09e11cd032a32dc5a3
This makes it difficult to interpose local scripts to override local
behavior, for testing purposes for example.
Warned-by: lintian
Change-Id: I5e1feda02a26f482728f5404496c5870ec93d8aa
To avoid repeated strcmp()s and make use of switch()'s optimised binary
lookup, we employ a second build step that preprocesses certain .c files
and uses gperf to substitute pseudomacros with their respective constant
hash value.
Change-Id: Id89c4728a0fc7aa911691d4dd1ba8e7b3916a983
We do not use a proper mount unit because that requires the mount point
to be encoded in the filename which is variable and depends on the value
coming from config.yml.
Change-Id: Ibb637c533c94bc3db119111460ca647a50a205af
Debian relies on the output of lsb-release in dkms, while
it doesn't strictly depend on it (it's just a Recommends).
We reported the bug towards dkms in Debian as
https://bugs.debian.org/896814
The best we can do until the underlying bug in dkms is fixed
is to depend on the lsb-release package in our ngcp-rtpengine-kernel-dkms
itself.
Change-Id: I2946b971ff463cec8f6e198b4a618ed0e056534c
Thanks: Richard Fuchs for debugging the issue
While still not the ideal implementation, this is certainly better than
the sysvinit script wrapper. We then will "only" need to move the setup
scripts into proper service files later on.
Change-Id: I990d6847117a4b91a8365a5e307fd96cf5b1899f
Properly switching to native systemd service files is too intrusive for
these services at this point of the release cycle. Let's use this hack
for now, and then convert these to the serveral .service, and .mount
units required.
Change-Id: I8f66bfd8be5924232bf2c34d42b18d2a332db3ee
These daemons require these facilities to be setup. Previously this
was implied and shadowed by the sshd dependency, but once removed
the implicit dependencies disappeared, make them explicit now.
Change-Id: I13b9b797da0d69636c0f87d92d80a9af46c0726c
The package was only being installed as module for the kernel version running at
the time it was installed.
Change-Id: I217367664ad40d50c92b49fae89569fe43edf684
If we are creating the kernel forwarding table, we have to make sure it
has been deleted already, otherwise we can get into collisions with the
already setup forwardings, and the subsequent add will fail anyway.
Change-Id: I2601c602543ff3e3493bae296d263dde545ff352
- Add missing quotes.
- Switch some problematic usages to use bash arrays.
- Override shellcheck errors (these might need fixing in the future).
Change-Id: Id451ff9f4c5d5ef9b3826544908d64e9c08c5797
Even though this is a false-positive, it confuses checkbashisms. So
let's rename the variables to something else, even more descriptive,
to avoid the check error.
Change-Id: Ife79bf76121bb4e3c120525ffe5a0eca871936f6
We want to have the same behavior as within
ngcp-rtpengine-recording-daemon's init script. Let's avoid code
duplication between start/stop vs restart and instead invoke
plain stop + start actions via restart.
While at it fix missing 'set -e' that was caught by Richard
during creation of ngcp-rtpengine-recording-daemon's init
script.
Change-Id: I4ef894d17e5e716f6f75eb59a153ba026e1df685
The redis onekey concepts is introduced to reduce traffic to redis
and redis notification traffic.
It modifies the current structure for one call in redis, which are
multiple keys with pre- and postfixes and the callid in between to
one key with the structure "json-<callid>". The value is a json
formatted string with the previous multi-key identifiers in it.
Otherwise we have the following error:
> root@spce:~# /etc/init.d/ngcp-rtpengine-daemon status
> /etc/init.d/ngcp-rtpengine-daemon: 98: /etc/init.d/ngcp-rtpengine-daemon: Syntax error: "(" unexpected
Change-Id: I85a5f8466733f42c78cdc125ba6d30d3f31e44a2
RTP Engine creates PCAP files for recorded calls on offer answer instead
of initial offer.
We make up bogus values for the nonessential parts of the PCAP, UDP, and
IP headers. We might be able to pull these from other parts of the RTP
Engine, but that information was unnecessary for recording calls so they
can be recorded to audio files.
If you change the packet headers, be really careful about byte order and
datatype size!
Noticed during lintian reviews + test builds
of ngcp-rtpengine-kernel, STR:
* Install ngcp-rtpengine-kernel-source + module-assistant
* m-a build ngcp-rtpengine-kernel fails with:
| tail: cannot open ‘/usr/src/modules/ngcp-rtpengine/../debian/changelog’ for reading: No such file or directory
| dpkg-parsechangelog: error: tail of /usr/src/modules/ngcp-rtpengine/../debian/changelog gave error exit status 1
| Building modules, stage 2.
| MODPOST 1 modules
| tail: cannot open ‘/usr/src/modules/ngcp-rtpengine/../debian/changelog’ for reading: No such file or directory
Fix conflicts:
| dh_gencontrol -- -v4.3.0.0+0~mr4.3.0.0+0~20160223155548.661+jessie~1.gbp6d1932+3.16.7-ckt20-1+deb8u3
| dpkg-gencontrol: error: source package has two conflicting values - ngcp-rtpengine-kernel and ngcp-rtpengine
| dh_gencontrol: dpkg-gencontrol -pngcp-rtpengine-kernel-modules-3.16.0-4-amd64 -ldebian/changelog -Tdebian/ngcp-rtpengine-kernel-modules-3.16.0-4-amd64.substvars -Pdebian/ngcp-rtpengine-kernel-modules-3.16.0-4-amd64 -v4.3.0.0+0~mr4.3.0.0+0~20160223155548.661+jessie~1.gbp6d1932+3.16.7-ckt20-1+deb8u3 returned exit code 255
| debian/rules:58: recipe for target 'binary-modules' failed
While at it Bump Standards-Version for ngcp-rtpengine-kernel
to 3.9.7 (no further changes) and fix package description.
Change-Id: Iaf7326f55cd3919afdb140d8e7acb5d3ff87b7d9
- add --subscribe_keyspace list config parameter.
- don't delete foreign calls by timers
- fix synchronization of foreign calls (use a separate redis_notify database)
- fix statistics for control channel calls.
- fix deletion of foreign calls upon del notifications
- update rtpengine-ctl tool
Noticed during lintian reviews + test builds
of ngcp-rtpengine-kernel, STR:
* Install ngcp-rtpengine-kernel-source + module-assistant
* m-a build ngcp-rtpengine-kernel fails with:
| tail: cannot open ‘/usr/src/modules/ngcp-rtpengine/../debian/changelog’ for reading: No such file or directory
| dpkg-parsechangelog: error: tail of /usr/src/modules/ngcp-rtpengine/../debian/changelog gave error exit status 1
| Building modules, stage 2.
| MODPOST 1 modules
| tail: cannot open ‘/usr/src/modules/ngcp-rtpengine/../debian/changelog’ for reading: No such file or directory
Fix conflicts:
| dh_gencontrol -- -v4.3.0.0+0~mr4.3.0.0+0~20160223155548.661+jessie~1.gbp6d1932+3.16.7-ckt20-1+deb8u3
| dpkg-gencontrol: error: source package has two conflicting values - ngcp-rtpengine-kernel and ngcp-rtpengine
| dh_gencontrol: dpkg-gencontrol -pngcp-rtpengine-kernel-modules-3.16.0-4-amd64 -ldebian/changelog -Tdebian/ngcp-rtpengine-kernel-modules-3.16.0-4-amd64.substvars -Pdebian/ngcp-rtpengine-kernel-modules-3.16.0-4-amd64 -v4.3.0.0+0~mr4.3.0.0+0~20160223155548.661+jessie~1.gbp6d1932+3.16.7-ckt20-1+deb8u3 returned exit code 255
| debian/rules:58: recipe for target 'binary-modules' failed
While at it Bump Standards-Version for ngcp-rtpengine-kernel
to 3.9.7 (no further changes) and fix package description.
Change-Id: Iaf7326f55cd3919afdb140d8e7acb5d3ff87b7d9
No further changes required to update to Debian Policy 3.9.7[.0]
While at it also execute 'wrap-and-sort -a' on debian/.
Change-Id: I7388491a5c0b2f4ea732db767bddfd67f9d21d3b
Removes the explicit redis-read-db configuration and reduces the option
to one redis DB and one redis write DB. If only the redis DB is
configured, then it will be used for all operations. If both are
configured, then the redis DB will be used for reading and the write DB
will be used for writing (updates).
Change-Id: I8d5a32c53c9416b514c98d69c3afe7c547e530ad
iptables might be managed via different tools by an administrator. In such a setup, insertion and deletion of rules in the INPUT chain as well as creation of new chains by an application is not wanted.
By setting the corresponding configuration parameter in the config file, the init-script will not touch the INPUT queue nor will it create the rtpengine chain. It will still attempt to create a rule in the rtpengine chain, but will refuse to start if that chain does not exist.
Currently, every rtpengine will subscribe to redis-keyspace notification
so it will receive a notification when an call is inserted. If the call
is not already handeled by the rtpengine, the call will be restored.
The reason for this is to have in-place redundancy. Imagine you have
multiple rtpengines running, eachone will have all calls of the others.
When one rtpengine fails somehow, infrastructure guys use BGP in order to
'move' the IP address from one rtpengine to another. Thisone can handle
the new calls instantly since they're already recovered by
redis-notification feature.
Next step is internally identify those calls in order to prevent some
timers to delete the calls where no RTP flows. Second will be
something we call 'partitioning'. It means that the subscription
to a redis notify will only be for the keyspace a dedicated rtpengine
writes to. This leads to the point that you can make redundancy groups
(partitions) of the rtpengines.
On upgrades from 2.8 LTS we have to install ngcp-rtpengine-kernl-dkms package
before the upgrade in order to get dkms to work. No need to upgrade the new
version of ngcp-system-tools too
Change-Id: I36fbfdffc5ca1e283ba0e8d5a42a96a72fbf324e