summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* vty: install 'exit', 'end',... commands on *all* nodesNeels Hofmeyr2017-09-279-25/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In many callers of the VTY API, we are lacking the vty_install_default() step at certain node levels. This creates nodes that lack the 'exit' command, and hence the only way to exit such a node is to restart the telnet session. Historically, the VTY looked for missing commands on the immediate parent node, and hence possibly found the parent's 'exit' command when the local node was missing it. That is why we so far did not notice the missing default commands. Furthermore, some callers call install_default() instead of vty_install_default(). Only vty_install_default() also includes the 'exit' and 'end' commands. There is no reason why there are two sets of default commands. To end this confusion, to catch all missing 'exit' commands and to prevent this from re-appearing in the future, simply *always* install all default commands implicitly when calling install_node(). In cmd_init(), there are some top-level nodes that apparently do not want the default commands installed. Keep those the way they are, by changing the invocation to new install_node_bare() ({VIEW,AUTH,AUTH_ENABLE}_NODE). Make both install_default() and vty_install_default() no-ops so that users of the API may still call them without harm. Do not yet deprecate yet, which follows in Icf5d83f641e838cebcccc635a043e94ba352abff. Drop all invocations to these two functions found in libosmocore. Change-Id: I5021c64a787b63314e0f2f1cba0b8fc7bff4f09b
* gb: drop special vty exit commands, use vty_install_default()Neels Hofmeyr2017-09-274-43/+2
| | | | | | | | | | | | | | | L_NS_NODE and L_BSSGP_NODE had specialized 'exit' and 'end' vty commands, but all they do is return to the CONFIG and ENABLE_NODEs like the default 'exit' and 'end' commands. Drop them and use the default 'exit' and 'end' cmds. Examining BSSGP and NS node behavior in osmo-sgsn exhibited identical list and exit/end behavior before and after this patch. Prepares for an upcoming commit incorporating vty_install_default() into install_node(), see I5021c64a787b63314e0f2f1cba0b8fc7bff4f09b: this patch changes to the default commands, the upcoming change implies them. Change-Id: I5b0de066b4249d482c22620d5b1bcb03f381293c
* vty: fix style: bssgp node vty promptNeels Hofmeyr2017-09-271-1/+1
| | | | | | | Add trailing space and 'config-' prefix to match our common VTY node prompt style. Change-Id: I88db128cad9fcc6e53326b4aed5d06ea9102f328
* VTY: implement talloc context introspection commandVadim Yanitskiy2017-09-273-1/+282
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change introduces a new command, which could be used to inspect the application's talloc context directly from VTY. To enable this feature, an application need to provide it's context via the 'vty_app_info' struct, and register the VTY command by calling the osmo_talloc_vty_add_cmds(). The new command is a sub-command of 'show': show talloc-context <context> <depth> [filter] Currently the following contexts may be inspected: - application - a context provided by an application; - null - all contexts, if NULL-context tracking is enabled. A report depth is defined by the next parameter, and could be: - full - full tree report, as the talloc_report_full() does; - brief - brief tree report, as the talloc_report() does; - DEPTH - user defined maximal report depth. Also, there are two optional report filters: - regexp - print only contexts, matching a regular expression; - tree - print a specific context, pointed by specified address. The command output is formatted the same way as in case of calling the talloc_report() or talloc_report_full(). Change-Id: I43fc42880b22294d83c565ae600ac65e4f38b30d
* vty/vty.c: do not bind vty context to application's oneVadim Yanitskiy2017-09-271-1/+1
| | | | | | | | | | | | | | | The 'vty_app_info' struct could be used by some applications to provide its talloc context. In the future, it will facilitate the implementation of talloc context introspection via VTY. But the 'vty' talloc context, that contains lots of items (memory chunks), is being bound to an application's one, so it becomes hard to read the last. Let's do not bind the 'vty' context automatically, until some common talloc context export policy is implemented. Change-Id: I9cb6ce9f24dbae400029e2d9f9c933fbfb16248f
* Add time conversion helpersMax2017-09-251-0/+5
| | | | | | | Add macros to break down absolute time in seconds into days/hours/minutes passed. Change-Id: I46b9a405c18ed9da8f31b7d5b6dcece5468bafbf
* vty: derive node name from prompt, use as XML idsNeels Hofmeyr2017-09-232-1/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'show online-help' produces XML output with <node id="..."> ids. We reference those from the osmo-gsm-manuals. Instead of numeric IDs coming from internal code, rather use a human-readable node ID -- referencing id='config-msc' is much easier than referencing id='23'. Add a char name[] to struct cmd_node, to hold this name. This may be provided upon struct definition. Since callers of the VTY API so far don't have a name yet, we would need to add names everywhere to get meaningful node IDs. There is a way to get node ID names without touching dependent code: My first idea was to find out which command entered the node, i.e. command 'msc' enters the MSC_NODE. But it is impossible to derive which command entered which node from data structs, it's hidden in the vty command definition. But in fact all (TM) known API callers indeed provide a prompt string that contains a logical and human readable string name. Thus, if the name is unset in the struct, parse the prompt string and strip all "weird" characters to obtain a node name from that. We can still set names later on, but for now will have meaningful node IDs (e.g. 'config-msc' from '%s(config-msc)# ') without touching any dependent code. When VTY nodes get identical node names, which is quite possible, the XML export de-dups these by appending _2, _3,... suffixes. The first occurence is called e.g. 'name', the second 'name_2', then 'name_3', and so forth. If a node has no name (even after parsing the prompt), it will be named merely by the suffix. The first empty node will become id='_1', then '_2', '_3', and so forth. This happens for nodes like VIEW_NODE or AUTH_NODE. If this is merged, we need to adjust the references in osmo-gsm-manuals.git. This can happen in our own time though, because we manually create the vty reference xml and copy it to the osmo-gsm-manuals.git and then update the references from the vty_additions.xml. This anyway has to happen because currently the references tend to be hopelessly out of sync anyway, placing comments at wildly unrelated VTY commands. Change-Id: I8fa555570268b231c5e01727c661da92fad265de
* vty: use internal node id for xml idsNeels Hofmeyr2017-09-231-1/+1
| | | | | | | | | | | | | The 'show online-help' produces XML output with <node id="..."> ids. We reference those from the osmo-gsm-manuals, but until now, these ids fall out of sync when the amount of VTY nodes changes. Change these ids to use the internal node ID constant (as in enum bsc_vty_node) instead of a simple counter. If this is merged, we need to adjust the references in osmo-gsm-manuals.git. Change-Id: Ib07fb9d9106e19f5be6539493e82b5d5991f8bc2
* vty_test: add artificial node levels for better testingNeels Hofmeyr2017-09-2013-39/+440
| | | | | | | | | | | | | In vty_test, add three levels of parent nodes (level1, level2, level3) with each having a leaf child (child1, child2, child3). Use these to enhance the vty_test cfg files and test more diverse situations. The current VTY code expects a go_parent_cb() to be present, otherwise it will bump right back to the CONFIG_NODE, which will not work with more than one node level below the CONFIG_NODE. Hence provide a minimal go_parent_cb(). Change-Id: Ib9bcf58b655fbd85e196f363fb7d8305d7dfc997
* comment: describe indent_cmp()Neels Hofmeyr2017-09-201-0/+4
| | | | Change-Id: Ia58c16d995f6751bdd69defe8a46665aee163f3d
* fix vty regression: empty parent nodeNeels Hofmeyr2017-09-205-7/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | The recent exit-by-indent patch breaks a VTY case where a node is entered but directly followed by a sibling or ancestor without listing any child nodes. Regression introduced by I24cbb3f6de111f2d31110c3c484c066f1153aac9. An example is a common usage in osmo-bts, where 'phy N' / 'instance N' is a parent node that is commonly left empty: phy 0 instance 0 bts 0 band 1800 Before this patch, this case produces the error: There is no such command. Error occurred during reading the below line: bts 0 Fix indentation parsing logic in command.c to accomodate this case. Add a unit test for empty parent node. Change-Id: Ia0880a17ae55accb092ae8585cc3a1bec9986891
* VTY: implicit node exit by de-indenting, not parent lookupNeels Hofmeyr2017-09-1918-25/+320
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Note: This will break users' config files if they do not use consistent indenting. (see below for a definition of "consistent".) When reading VTY commands from a file, use indenting as means to implicitly exit child nodes. Do not look for commands in the parent node implicitly. The VTY so far implies 'exit' commands if a VTY line cannot be parsed on the current node, but succeeds on the parent node. That is the mechanism by which our VTY config files do not need 'exit' at the end of each child node. We've hit problems with this in the following scenarios, which will show improved user experience after this patch: *) When both a parent and its child node have commands with identical names: cs7 instace 0 point-code 1.2.3 sccp-address osmo-msc point-code 0.0.1 If I put the parent's command below the child, it is still interpreted in the context of the child node: cs7 instace 0 sccp-address osmo-msc point-code 0.0.1 point-code 1.2.3 Though the indenting lets me assume I am setting the cs7 instance's global PC to 1.2.3, I'm actually overwriting osmo-msc's PC with 1.2.3 and discarding the 0.0.1. *) When a software change moves a VTY command from a child to a parent. Say 'timezone' moved from 'bts' to 'network' level: network timezone 1 2 Say a user still has an old config file with 'timezone' on the child level: network bts 0 timezone 1 2 trx 0 The user would expect an error message that 'timezone' is invalid on the 'bts' level. Instead, the VTY finds the parent node's 'timezone', steps out of 'bts' to the 'network' level, and instead says that the 'trx' command does not exist. Format: Consistent means that two adjacent indenting lines have the exact same indenting characters for the common length: Weird mix if you ask me, but correct and consistent: ROOT <space>PARENT <space><tab><space>CHILD <space><tab><space><tab><tab>GRANDCHILD <space><tab><space><tab><tab>GRANDCHILD2 <space>SIBLING Inconsistent: ROOT <space>PARENT <tab><space>CHILD <space><space><tab>GRANDCHILD <space><tab><tab>GRANDCHILD2 <tab>SIBLING Also, when going back to a parent level, the exact same indenting must be used as before in that node: Incorrect: ROOT <tab>PARENT <tab><tab><tab>CHILD <tab><tab>SIBLING As not really intended side effect, it is also permitted to indent the entire file starting from the root level. We could guard against it but there's no harm: Correct and consistent: <tab>ROOT <tab><tab>PARENT <tab><tab><tab><tab>CHILD <tab><tab>SIBLING Implementation: Track parent nodes state: whenever a command enters a child node, push a parent node onto an llist to remember the exact indentation characters used for that level. As soon as the first line on a child node is parsed, remember this new indentation (which must have a longer strlen() than its parent level) to apply to all remaining child siblings and grandchildren. If the amount of spaces that indent a following VTY command are less than this expected indentation, call vty_go_parent() until it matches up. At any level, if the common length of indentation characters mismatch, abort parsing in error. Transitions to child node are spread across VTY implementations and are hard to change. But transitions to the parent node are all handled by vty_go_parent(). By popping a parent from the list of parents in vty_go_parent(), we can also detect that a command has changed the node without changing the parent, hence it must have stepped into a child node, and we can push a parent frame. The behavior on the interactive telnet VTY remains unchanged. Change-Id: I24cbb3f6de111f2d31110c3c484c066f1153aac9
* Expand bit pretty-printerMax2017-09-181-9/+11
| | | | | | | | | | Add OSMO_BIT_PRINT_EX() which is like OSMO_BIT_PRINT() but allows to specify character to be printed for set bits. It's useful to print bytes used as mask where set bit has particular semantics - for example TS mask in OsmoPCU. Change-Id: I72528bc1e376134c5a7b6e7a50c48e38c3f48b0a Related: OS#2282
* Make release helper more robustMax2017-09-152-1/+5
| | | | | | | | * check for bumpversion and error out if missing * drop bumpversion dependency from .deb Change-Id: Ide04d4c1ba20426bdf9531e25b462eda9418858a Related: OS#1861
* osmo-auc-gen.c: squelch compiler warnings, move local varNeels Hofmeyr2017-09-121-4/+3
| | | | | | | | The compiler thinks that ind or ind_mask may be used uninitialized, because it doesn't analyze the conditionality of command line arguments and other variables set accordingly. Make the compiler happy by zero initializing. Change-Id: I9ddcb0525159da520aceaeb6e908a735a003bb5a
* VTY: interactive: never look for matching commands on parent nodeNeels Hofmeyr2017-09-083-33/+5
| | | | | | | | | | | | | | | | | | | | | | For interactive telnet VTY, remove the implicit move up to the parent node when a command did not succeed on the current node level. When reading config files, this behavior was useful to allow skipping explicit 'exit' commands. (A different patch deals with that.) In the telnet VTY, this behavior was never necessary. Explicit 'exit' commands can move to the parent node, and typically uninformed users expect to require that. On a telnet VTY, counting indents like for reading config files is not an option: a user will always type from the first column or may paste some leading spaces without intended meaning. After this patch, it is thus no longer possible to paste a complete config across several node levels directly to a telnet session, unless it contains 'exit' commands. Change-Id: Id73cba2dd34676bad8a130e9c45e67a272f19588
* ipa: place comment "IPA Multiplex" on ipa allocated msgbsNeels Hofmeyr2017-09-071-1/+1
| | | | | | | | | | libosmocore offers the ipa API as general IPA Multiplex, which is e.g. used for GSUP in osmo-msc. Looking at talloc reports, it is confusing to see "Abis/IP" as msgb comment, because osmo-msc does not have an Abis interface. Rename to "IPA Multiplex" as a more general description. Change-Id: I3714dd21707bec0c4bcd0871e6ee8ff32d56b125
* cosmetic: clarify language in vty read errorKeith2017-09-051-1/+1
| | | | | | | | | | | | | | This is very minor but it annoys every time I see it. The text: "Error occurred during reading below line:" is not a complete sentence. The default understanding in english having left out the article implies that the error occured reading below [the] specified line, not that the error occured reading [the] specified line. That is to say, The message implied that the printed line was the last successfully parsed line. Change-Id: Ib4dd135feb9609b14983db5dac321a70267d8f30
* lapd_core: Fix crash in lapd_est_req() functionIvan Kluchnikov2017-09-011-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lapd_est_req() function could be called on uninitialized lapd link (before lapd_dl_init() and after lapd_dl_exit() functions) due to invalid usage on higher levels. In order to prevent using uninitialized lapd link, we should set LAPD_STATE_NULL state for lapd_datalink in lapd_dl_exit() function. So all messages for lapd_datalink in null state will be unhandled by lapd_recv_dlsap() function and lapd_est_req() function will not be called before lapd_dl_init() function where lapd link state is changed to idle. #0 0x00007f46ecd99aa5 in lapd_est_req (dp=<optimized out>, lctx=0x7f46ed80b8b8) at lapd_core.c:1769 #1 0x00007f46ecd9dda8 in rslms_rx_rll_est_req (msg=msg@entry=0x7f46eeab4940, dl=dl@entry=0x7f46ed80b888) at lapdm.c:845 #2 0x00007f46ecd9fc03 in rslms_rx_rll (lc=0x7f46ed80b398, msg=0x7f46eeab4940) at lapdm.c:1157 #3 lapdm_rslms_recvmsg (msg=0x7f46eeab4940, lc=0x7f46ed80b398) at lapdm.c:1223 #4 0x00007f46ed63773d in rsl_rx_rll (msg=<optimized out>, trx=<optimized out>) at rsl.c:2178 #5 down_rsl (trx=<optimized out>, msg=<optimized out>) at rsl.c:2541 #6 0x00007f46ed641529 in sign_link_cb (msg=<optimized out>) at abis.c:169 #7 0x00007f46ec54b111 in ipaccess_bts_read_cb (link=0x7f46eeab4940, msg=0x0) at input/ipaccess.c:807 #8 0x00007f46ec548a8e in ipa_client_read (link=0x7f46ee26ae30) at input/ipa.c:74 #9 ipa_client_fd_cb (ofd=<optimized out>, what=1) at input/ipa.c:137 #10 0x00007f46ecfc726f in osmo_fd_disp_fds (_eset=0x7ffe7a9fcd20, _wset=0x7ffe7a9fcca0, _rset=0x7ffe7a9fcc20) at select.c:167 #11 osmo_select_main (polling=polling@entry=0) at select.c:207 #12 0x00007f46ed63fc25 in bts_main (argc=5, argv=<optimized out>) at main.c:359 #13 0x00007f46ebd76f45 in __libc_start_main (main=0x7f46ed61b120 <main>, argc=5, argv=0x7ffe7a9fcf18, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, #14 0x00007f46ed61b14e in _start () Related: OS#1982 Change-Id: I306dad9b78e3becaef14c5305ec25c312feefe3c
* libosmogsm: add Routing Area Identifier testMax2017-09-012-0/+57
| | | | | | Ensure that gsm48_parse_ra() and gsm48_construct_ra() behave properly. Change-Id: I27117fe728407dd10886459e89ba4ff9d5e53e6b
* Makefile.am: fix missing LTLDFLAGS for libosmocodingVadim Yanitskiy2017-08-312-0/+2
| | | | | | | | Despite the libosmocoding.map is preset since the library release, one was not used in a proper way. The LTLDFLAGS were missing, so let's add them. Change-Id: Idf677825ff642d50bea43c7f970810783e864fdd
* Add define for supported a5 key length limitMax2017-08-301-1/+3
| | | | Change-Id: I8ed0f1dbc31aaff22a685ceb3bd2f8db4d2f34fd
* umts aka: add sqn_ms out-param, print SQN.MS in osmo-auc-genNeels Hofmeyr2017-08-294-1/+14
| | | | | | | | | | | | | | | | When doing UMTS AKA with AUTS, it can be interesting to know the SQN.MS that was encoded in the AUTS. The only way to know this is to provide it as a separate out-parameter from milenage_gen_vec_auts(), because the SQN.MS from AUTS stored in umts.sqn is immediately modified non-trivially by milenage_gen_vec(). Add sqn_ms to struct osmo_sub_auth_data to retain SQN.MS even after a vector was generated. Use this to print out SQN.MS for 'osmo-auc-gen -3 -A'. Adjust test suite expectations. Related: OS#2464 Change-Id: I9fc05bbf169d06716f40b995154fd42a3f91bef3
* cosmetic: umts aka: tweak comments for sqn and indNeels Hofmeyr2017-08-291-2/+2
| | | | | | | | Clearly indicate that 'sqn' is an in *and* out-parameter. Clarify the effect of 'ind'. Change-Id: Ia40cd4ddf35f4fbe895b45b8ea59378f5ce9eb1f
* osmo-auc-gen: umts: print out the IND of the SQN usedNeels Hofmeyr2017-08-292-3/+22
| | | | | | | | | | Make ind_mask available in the main(){} scope, in order to print out IND = SQN & ind_mask. Adjust test suite expectations. Related: OS#2465 Change-Id: I91eac53c4af66a58b9372d9baf5781fc9f29b1fc
* osmo-auc-gen: umts: add --ind-len argNeels Hofmeyr2017-08-294-1/+98
| | | | | | | | | | | osmo-auc-gen so far does not allow indicating the IND bit length of SQN. A default of 5 serves most practical cases, nevertheless we should allow passing arbitrary IND lengths. Enhance the test suite to test --ind-len. Related: OS#2465 Change-Id: Ia1d8b6a823ffc92290b3e39e4e4665aeff80ccc0
* osmo-auc-gen: umts: add --ind argNeels Hofmeyr2017-08-294-2/+120
| | | | | | | | | | | | During UMTS AKA, the caller typically indicates which IND slot the next used SQN should belong to. Without this option, osmo-auc-gen will always produce SQN from IND-slot 0. Add --ind option. Enhance the osmo-auc-gen_test.sh to expect errors with useful printouts on stderr, and add tests that verify valid --ind ranges. Related: OS#2465 Change-Id: Ib60eec80d58ca9a0a01e7fbd2bcbbd4339b1a6d8
* osmo-auc-gen: umts: use default of ind_bitlen = 5 instead of 0Neels Hofmeyr2017-08-292-2/+3
| | | | | | | | | | | | | | | Most USIM out there seem to use IND-length = 5 bits, so do sysmousim-sjs1. Currently from initialization we are using an IND length of zero in osmo-auc-gen, which produces confusing SQN results after AUTS: Where want SQN to be incremented to the next IND array, usually +32, an IND-len of 0 makes for only +1. As result, the osmo-auc-gen_test.sh produces SQN 32 instead of 24 after receiving SQN.MS = 23 from AUTS: adjust test expectations. Related: OS#2465 Change-Id: I9fcc11fa2b5816302dcc6b72249b1ee40d5a61f5
* osmo-auc-gen: umts: properly request --sqnNeels Hofmeyr2017-08-291-5/+17
| | | | | | | | | | | | The user supplied an --sqn to generate a vector for, but milenage_gen_vec() performs a nontrivial SQN increment before generating the vector. To end up with the user supplied SQN, we need to reverse this increment beforehand. Do this after all cmdline args have been parsed, in case one of them modifies the IND-bitlen parameter, which affects the SQN calculations. Related: OS#2464 OS#2465 Change-Id: Ic51a8f6333fee9c02b4073ca360991d0aa69c74f
* osmo-auc-gen: umts: remove erratic SQN.MS printoutNeels Hofmeyr2017-08-292-7/+0
| | | | | | | | | | | | | osmo-auc-gen tries to be helpful by deriving the SQN.MS from the SQN that resulted from AUTS + milenage_gen_vec(), but there is actually no way to derive the actual AUTS SQN.MS from the resulting SQN. Completely drop the printout to prevent confusion. Adjust test suite expectations. Related: OS#2464 Change-Id: Ie2432c6d6a23818f7b3a29b1295dcbb505e2be53
* cosmetic: test for osmo-auc-gen: print error for missing binaryNeels Hofmeyr2017-08-291-0/+6
| | | | Change-Id: I98c23ae6378a16cf3b76c90d4ea0dfcf61ff3033
* vty: 'ctrl' node: add missing default commands like list,exit,endNeels Hofmeyr2017-08-281-0/+1
| | | | Change-Id: I72569ed767b6a4d792b2867d02caa65520e27cd3
* Update release helperMax2017-08-261-14/+25
| | | | | | | | | | | | * add reference to semver spec * use 'patch' release by default * unify debian/changelog distro update for library and non-library projects * abort library release for non-empty TODO-RELEASE if libversion is not modified Change-Id: I413f99cbfa6e6dcc753e3be9fc3c8d682e6a41f3 Related: OS#1861
* Use value string check from osmo-ciMax2017-08-253-36/+4
| | | | Change-Id: I513835be2d931d0a931cdfc996f361a451bc1a15
* Relax branch restriction while making releaseMax2017-08-241-1/+1
| | | | | | | | | Previously making release of non-library project from non-master branch would fail. Relax this check to facilitate submission to gerrit via topic branches. Change-Id: Ie89b79a45033bee422e4ff898069ea6ac2c2f524 Related: OS#1861
* gsm0411_utils: GSM03.40 9.2.3.11 SCTS should be localKeith2017-08-171-1/+1
| | | | | | | | From GSM 03.40: "The Service-Centre-Time-Stamp, and any other times coded in this format that are defined in this specification, represent the time local to the sending entity." Change-Id: I4efdb1eaae43aced33961b64d4f14b0040321c10
* ports.h: Add VTY port for GGSNHarald Welte2017-08-161-0/+2
| | | | Change-Id: I5bd49fbc19e88db96b4adbd56c82e7936059551c
* auth_milenage: Fix non-AUTS case with OPHarald Welte2017-08-161-12/+24
| | | | | | | | | We only implemented OPC generation from OP in the AUTS case, but not in the case of normal authentication vector generation. This never really was visible so far due to the fact that we use OPC at sysmocom, and never the shared OP value. Change-Id: Id3fa038dfc2ff1ba63616fa5e8eab0520481ff26
* add osmo_fd_setup() convenience function to fill-in osmo_fdHarald Welte2017-08-122-0/+22
| | | | | | | | This basically follows the concept of osmo_timer_setup() and allows the caller to fill-in all configurable fields of osmo_fd in one line of code, rather than open-coding it in 5 lines everywhere. Change-Id: I6dbf19ea22fd65302bfc5424c10418d1b7939094
* tlv: add [msgb_]t16lv_put() for 16bit tag + 8 bit len TLVsHarald Welte2017-08-091-1/+20
| | | | | | | | | | | In the Protocol Configuration Options IE (see 3GPP TS 24.008 10.5.6.3) there is yet another new TLV format (derived from PPP IPCP/LCP/...) which uses 16bit tag and 8bit length. Let's add functions so we can generate related TLVs. Parsing is unfortunately not possible in our existing structure as our tlv_parsed array only has 256 entries and thus cannot cope with 16bit tags. Change-Id: I9799130e2eba8fae8c4480fbb8a900c30232b694
* Add osmo_gprs_{ul,dl}_block_size_{bits,bytes} functionsHarald Welte2017-08-093-0/+121
| | | | | | Those functions can be used to look up the size of (E)GPRS blocks. Change-Id: I05ff75ef7dfae639886bbd09fe35f03a8af9d988
* Add