Age | Commit message (Collapse) | Author | Files | Lines |
|
It will be re-used in next commits.
Change-Id: I3c108efad6461cd4e82ef435290005174bc8b30e
|
|
That should be used for point-to-point destination address.
Change-Id: Iead7e9c7570ba6a9de3089a164997b1db81dc59a
|
|
It's not really set by any cmdline arg, and it always contains same
content as options.netaddr.
Change-Id: Id3cdca0975bdd2893b4b83944c5ebf29b2994622
|
|
It's not really set by any cmdline arg, and it always contains same
content as options.netaddr.
Change-Id: I5a4e3c4b5ae43a89a7d0af62fb396311dcb6ebae
|
|
Change-Id: Ib38907c3a05c1651faa86ef57381ee22643e0d53
|
|
Change-Id: I2217dfb0b0a1e6e029ac817902e80c771ed219c3
|
|
Change-Id: I6e23e024ee30d6049c6b8b614c50d062d80a5260
|
|
It's not needed because a link-local address will be added as a result
of Create Pdp Context Response. Morevoer, it fools sgsnemu ip addr
verifications since it gets used on some scenarios by applications.
Change-Id: I1d51f3ca91edbb3b788939982ab63264182ec2ce
|
|
The example config for osmo-sgsn suggests to use 127.0.0.6 as bind ip.
(the ip-address where the SGSN tries to connect) Lets use 127.0.0.2
instead to match the default config of osmo-sgsn.
Change-Id: I513ab64896dee47fd92dbc5ef495fe1c6e734ec3
|
|
The error handling in the code was doing exactly what one would not
expect. If we switch to a netns and then encounter an error, we
obviously have to switch back to the original netns before returning.
Likewise, if we temporarily change the signal mask, we need to switch
back to the original one before returning.
Change-Id: I9ff5ae7bffc5bd7629dae0af1b72cfea548f9039
|
|
The parameter was simply unused until this change was made. An Ipv6 can
have a prefix length between 48 and 64 bits.
Change-Id: I4b1512d5a4d7bbc2516221ea6808565eac0eb18f
|
|
It is vital that init_netns() is called first in order to initialize
default_nsfd.
Change-Id: Ic16646fa7d60c578056b17351c5fe2090a81dff0
|
|
Change-Id: I0b20e4870bf62df0a459a621a64a4e2795340ceb
|
|
They will be required by sgsnemu to implement ICMPv6 Router
Soliciations.
Change-Id: Ie878604f0fc0169cc98a1e9eee64b14d76be2c45
|
|
sgsnemu is a testing program and doesn't have a VTY iface to configure
its log levels, so let's simply enable INFO as a default.
Change-Id: I2a577f547b57fb0ab7b83de5c12da088697f3904
|
|
It makes it easier to understand where the function is called.
Change-Id: Ibf32b416c3247d1415aa9c1a88755076dcd606f4
|
|
Let's avoid buffer-overflow writing into out-of-bounds memory in the
event the GGSN sends us 2 EUAs in Create PDP Context Respose. It should
theoretically happen since we don't yet support ipv4v6 APNs in sgsnemu,
but who knows.
Change-Id: I8becd90ce1f0e8bb6e21438c04da4a9cab845492
|
|
As pointed out at https://github.com/libexpat/libexpat/issues/312
libtool does not play nice with clang sanitizer builds at all.
For those builds LD shoud be set to clang too (and LDFLAGS needs the
sanitizer flags as well), because the clang compiler driver knows how
linking to the sanitizer libs works, but then at a later stage libtool
fails to actually produce the shared libraries and the build fails. This
is fixed by this patch.
Addtionally LD_LIBRARY_PATH has no effect on conftest runs during
configure time, so the rpath needs to be set to the asan library path to
ensure the configure run does not fail due to a missing asan library,
i.e.:
SANS='-fsanitize=memory -fsanitize-recover=all -shared-libsan'
export CC=clang-10
ASANPATH=$(dirname `$CC -print-file-name=libclang_rt.asan-x86_64.so`)
export LDFLAGS="-Wl,-rpath,$ASANPATH $SANS $LDFLAGS"
Change-Id: Icc09c9d09bfa01264ddf867356d068e50d97c5a0
|
|
Change-Id: I7d5d69f104d24aafd4aa0b7289bb8b3fa1d77ed4
|
|
The default configuration has a random ip-address as first DNS server.
This might cause unnedessary trouble for people who try osmo-ggsn the
first time. Lets have some public DNS here, just to be sure.
Change-Id: I5876a806185bb3aea356fb6996d1925b8d0d1758
|
|
Looks like a bug introduced by I9b9c8fd6eeaaa7d190b8e2a34ca82088904c7708.
Change-Id: I38caf5541ca90638ed10714adfbb08120e5397b9
Fixes: CID#208656
|
|
Change-Id: I9b9c8fd6eeaaa7d190b8e2a34ca82088904c7708
|
|
Change-Id: Idd0ad8fa9c8e7ba0aeec1b52947598d4d297b620
|
|
Change-Id: I8240b388ffb8c1806bf0d34a9e59146b403a13be
|
|
Change-Id: I84bbe9eff37e14985b812b49e53eb6d62fff14a5
|
|
Change-Id: I265637f39dd16dd43992f33149e512e34ed83252
|
|
Change-Id: Ide9465a01857dbe5ec7f5bc1d09468153865156f
|
|
"An address '192.168.7.1' is specified without prefix length. The behavior
of parsing addresses without prefix length will be changed in the future
release. Please specify prefix length explicitly."
Change-Id: I51777c6344191182fb87bae6f0048ce422802541
|
|
Change-Id: Ib6a97d8c93203e1f896ab1bd3d200d2223f9fc48
|
|
Modern gcc-9.2.1 actually fails like this with --enable-werror active:
In file included from sgsnemu.c:52:
In function ‘process_options’,
inlined from ‘main’ at sgsnemu.c:1557:6:
../lib/syserr.h:31:3: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
31 | logp2(sub, pri, __FILE__, __LINE__, 0, \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32 | fmt "\n", ##args); \
| ~~~~~~~~~~~~~~~~~
sgsnemu.c:435:3: note: in expansion of macro ‘SYS_ERR’
435 | SYS_ERR(DSGSN, LOGL_ERROR, 0,
| ^~~~~~~
sgsnemu.c: In function ‘main’:
sgsnemu.c:436:42: note: format string is defined here
436 | "Listening address must be specified: %s!",
| ^~
It is correct: We are dereferencing args_info.listen_addr in a
branch which explicitly checks if that is NULL beforehand :/
Change-Id: I417f447f821d396aa92049e0a791121240f1cf44
|
|
Related: OS#4178
Change-Id: I295b89ee493d230c2550d461fca9602c589d38b5
|
|
Currently each user (application) of libgtp needs to manage its own
timers in order to call gtp_retrans_timeout() and gtp_retrans() and
maintain retransmit and duplicate queues working correctly. This adds
unnecesary complexity to applications since nowadays, as a libosmocore
user, libgtp can handle this internally in an easy way.
Furthermore, keeping the timers internal to the library allows for
easier extension of features as well as re-implementation of related
code in the future.
Last but not least, it was detected that existing known applications
(osmo-sgsn, osmo-ggsn, sgsnemu) are not using correctly the API, since
they should be updating their timers through gtp_retrans_timeout()
everytime a message is enqueued/transmitted, otherwise they may fire
gtp_retrans() for retransmition too late in some cases.
Related: OS#4178
Change-Id: Ife7cfd66d6356f413263fe5bda9e43091f5c9e98
|
|
Change-Id: I39e92f25ed51665c8a615826ed52f35024bdd54b
|
|
This change fixes the following compiler warnings (found by Clang):
gtp.c:2747:13: warning: variable 'pdp' is used uninitialized
whenever 'if' condition is false
[-Wsometimes-uninitialized]
} else if (version == 1) {
gtp.c:2781:14: note: uninitialized use occurs here
OSMO_ASSERT(pdp);
^^^
Shall not happen in general, but let's make Clang happy.
Change-Id: Id471b22afd4c45435589a4edda0a804e66be3a7a
|
|
As stated in the comment above, we need to use the tunnel identifier
to find a GTP context, and derive both IMSI and NSAPI from that TID,
when speaking GTP version 0.
This change fixes the following warnings (found with Clang):
gtp.c:2115:22: warning: variable 'pdp' is uninitialized
when used here [-Wuninitialized]
pdp_set_imsi_nsapi(pdp, tid);
^^^
gtp.c:2118:34: warning: variable 'imsi' is uninitialized
when used here [-Wuninitialized]
if (gtp_pdp_getimsi(gsn, &pdp, imsi, nsapi))
^^^^
gtp.c:2118:40: warning: variable 'nsapi' is uninitialized
when used here [-Wuninitialized]
if (gtp_pdp_getimsi(gsn, &pdp, imsi, nsapi))
^^^^^
Change-Id: I8f1c8d0ba2e8189d97fe1bb5c872680e5ad1cd7a
|
|
Update documentation since nowadays there are more paths calling
ggsn_close_one_pdp() (because we now close pdp contexts during sgsn
timeouts).
Switch pdp_freepdp() to gtp_freepdp() since in the event we ended up
there in the future we want to go through normal delete_ctx_cb to free
related application data structures.
Change-Id: I7d9ae9a27390498ba387797aac6651e32fa44f29
|
|
Change-Id: I1f85c7cc7684e146fca4f17914927d45410dbb84
|
|
That code was commented out in 0b076a331e1e7f955580313a5da416c170b3b4ce
(year 2003), and indeed it makes no sense to call those in current pdp
lifecycle (they are expected to be freed by the application).
Change-Id: I096d8cb8d749ff9b737d6f3f96b1d423660ece37
|
|
Change-Id: Ie768ddb45313582b4b5358b97a981080be64fd42
|
|
Fixes: eefa30dce8fa8e0ae16a3108e23041f92ea6ab21
Fixes: 2d6a69e69a4b4cb2b8cc63c4810dae44e5a4d8f6
Change-Id: I9ee5f4142cacf912145693c72a53c0f531bad2c6
|
|
This patch is quite big because implementing echo req/resp and recovery
requires having knowledge and managing differentiated state for each GSN
peer attached/connected to osmo-ggsn. This kind of information was not
available in osmo-ggsn nor in libgtp.
So osmo-ggsn is now able to track GSN peers connected to a
ggsn_ctx (associated gsn_t from libgtp) by means of "sgsn_peer" data
structure, and accessible from the ggsn through a list. The instances of
sgsn_peer are currently allocated and destroyed dynamically based on
discovered peer who have at least a pdp context attached to us (we are
not interested in peers without pdp contexts because we don't need to
send echo requests/responses and maintain state in that case).
A new private pointer (pdp_t->priv) data structure struct pdp_priv_t is
added to be able to relate a pdp_t to an sgsn as well as the already
existing pointer to an apn.
An "echo-interval <0-36000>" VTY command is added which allows
configuring time wait between echo requests being sent to each
sgsn_peer. Transmission of echo requests is disabled by default.
Finally, a new "show sgsn" VTY command is introduced, and its output is
also printed during "show ggsn".
Related: OS#4165
Change-Id: Id2c84165dc59dff495106758146a701ca488834f
|
|
Since osmo-ggsn can manage several GSN structures simultaneously, it
needs the gsn_t pointer to know the ggsn it should forward the call to.
Related: OS#4165
Change-Id: I33b4fe594d5833993af01cce34737e61e597b320
|
|
Change-Id: I49e7db4d0f5c7868b86a4947d8b5739c2068da46
|
|
GTP version and primary/secondary information is printed now for each
pdp context.
Related: OS#4154
Change-Id: If9682fe343e9a1e78175a12538fb80d4bda54802
|
|
Change-Id: Ie772f2c54264c8bc91f50d9030479861dd8868b7
|
|
Fixes potential duplicates when calling following VTY cmd:
show pdp-context ggsn NAME
show pdp-context ggsn NAME apn APN
Related: OS#4154
Change-Id: I98db39a710a72a1438d71aabaf4f8227984643e3
|
|
Change-Id: I237acdee0be19498804e0d509c610f4e0454ba72
|
|
in46a_from_eua() API documentation clearly states an array of 2 items
should be passed as pointer, but show_one_pdp() was passing only one,
which would end up in out-of-bounds writes on v4v6 EUAs.
Let's better use ippool to print allocated ip addresses instead of
parsing EUAs we sent some point in the past.
Change-Id: I7e164f40f50de43027bcd4464aa879450d2fb10e
|
|
Preparation for next commit, where this function will be needed inside
libmisc (lib/*).
Change-Id: Ibab4f6c09d1e5f0e9cfaea28ae1e7ab5b5c219b5
|
|
This way we further shrink ggsn.c and leave there GGSN related code.
Change-Id: I9e6a3beac7657f0a8c02d514b54c6f1caa93bba7
|