## Description
Hello all, I'm migrating my Kamailio logics from legacy .cfg file to KEMI script. I began with Python but switched then to Lua, but there are some subclass / functions described in KEMI documentation that seem not to be present in Lua KSR object.
In this case, I am having trouble with the subclass "kx" described [here](https://kamailio.org/docs/tutorials/devel/kamailio-kemi-framework/modules/#k...) which is used in the default Lua script example [here](https://github.com/kamailio/kamailio/blob/ca49dc0344f2ca4eae1999f6b46e0ab8c3...)
The error in the logs: ```bash app_lua [app_lua_api.c:726]: app_lua_run_ex(): error from Lua: /etc/kamailio/kamailio.lua:196: attempt to index field 'kx' (a nil value) ```
Referring to the following line in my Lua script: ```lua function ksr_route_reqinit() if not KSR.is_myself_srcip() then local srcip = KSR.kx.get_srcip(); if KSR.htable.sht_match_name("ipban", "eq", srcip) > 0 then -- ip is already blocked KSR.dbg("request from blocked IP - " .. KSR.pv.get("$rm") .. " from " .. KSR.kex.gete_furi() .. " (IP:" .. srcip .. ":" .. KSR.kex.get_srcport() .. ")\n"); KSR.x.exit(); end if KSR.pike.pike_check_req() < 0 then KSR.err("ALERT: pike blocking " .. KSR.pv.get("$rm") .. " from " .. KSR.kex.gete_furi() .. " (IP:" .. srcip .. ":" .. KSR.kex.get_srcport() .. ")\n"); KSR.htable.sht_seti("ipban", srcip, 1); KSR.x.exit(); end end end ```
- Should this function be available through KSR object ? If yes we're talking about an issue Or - Is this function not supported anymore / not with app_lua ? In this case we should fix the documentation + the example script
### Troubleshooting
Debian Jessie Kamailio 5.3 Lua 5.2
#### Reproduction
I tried different versions, all KO (Kamailio 5.2, 5.3, and last commit on master: kamailio 5.4.0-dev3 (x86_64/linux) 5afe1e)
1. Install Debian Jessie 2. Clone Kamilio GIT 3. Build from source with make (enabling the desired modules before) 4. Insert Lua script (demo one is fine to reproduce my issue)
#### Debugging Data
```bash aaaa@bbbbb:/# kamailio -V version: kamailio 5.4.0-dev3 (x86_64/linux) 5afe1e flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, 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, TLS_PTHREAD_MUTEX_SHARED ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: 5afe1e compiled on 14:27:15 Jan 14 2020 with gcc 6.3.0 ```
#### Log Messages
```bash app_lua [app_lua_api.c:726]: app_lua_run_ex(): error from Lua: /etc/kamailio/kamailio.lua:196: attempt to index field 'kx' (a nil value) ```
#### SIP Traffic
Any message going through ksr_route_reqinit() function is triggering the error
Thanks !
You have to load `kemix` module.
Thank you @miconda, super quick! Indeed I did not understand from where were being extracted all KSR.kx. functions. Fixed by adding `kemix` in `included_modules` before installing, and `loadmodule "kemix.so"` into the config.
We might add clarification on [KEMI docs](https://kamailio.org/docs/tutorials/devel/kamailio-kemi-framework/modules/#k...) in order to avoid brain conflicts between KEMI, kemix, kex, and kx terms. We do you think? I'd be happy to add it if lgtm.
Thanks again, closing.
Closed #2196.
Feel free to make a pull request to the docs for clarifying.