summaryrefslogtreecommitdiffstats
path: root/meta-networking/recipes-connectivity
Commit message (Collapse)AuthorAgeFilesLines
...
* samba: fix pyext_PATTERN for cross compilationYi Zhao2021-11-252-0/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The pyext_PATTERN will add native arch as suffix when cross compiling. For example, on qemuarm64, it is expanded to: pyext_PATTERN ='%s.cpython-310-x86_64-linux-gnu.so' which will result in the incorrect library name. root@qemuarm64:~# find /usr/lib -name \*cpython\* /usr/lib/pkgconfig/samba-policy.cpython-310-x86_64-linux-gnu.pc /usr/lib/libsamba-policy.cpython-310-x86-64-linux-gnu.so /usr/lib/samba/libsamba-python.cpython-310-x86-64-linux-gnu-samba4.so /usr/lib/samba/libsamba-net.cpython-310-x86-64-linux-gnu-samba4.so /usr/lib/libsamba-policy.cpython-310-x86-64-linux-gnu.so.0 /usr/lib/libsamba-policy.cpython-310-x86-64-linux-gnu.so.0.0.1 /usr/lib/python3.10/site-packages/samba/dsdb_dns.cpython-310-x86_64-linux-gnu.so /usr/lib/python3.10/site-packages/samba/dsdb.cpython-310-x86_64-linux-gnu.so /usr/lib/python3.10/site-packages/samba/xattr_tdb.cpython-310-x86_64-linux-gnu.so /usr/lib/python3.10/site-packages/samba/_ldb.cpython-310-x86_64-linux-gnu.so /usr/lib/python3.10/site-packages/samba/gensec.cpython-310-x86_64-linux-gnu.so [snip] Set pyext_PATTERN to '%s.so' to remove the suffix. After the patch: root@qemuarm64:~# find /usr/lib/ /usr/lib/pkgconfig/samba-policy.pc /usr/lib/libsamba-policy.so /usr/lib/samba/libsamba-python-samba4.so /usr/lib/samba/libsamba-net-samba4.so /usr/lib/libsamba-policy.so.0 /usr/lib/libsamba-policy.so.0.0.1 /usr/lib/python3.10/site-packages/samba/dsdb_dns.so /usr/lib/python3.10/site-packages/samba/dsdb.so /usr/lib/python3.10/site-packages/samba/xattr_tdb.so /usr/lib/python3.10/site-packages/samba/_ldb.so /usr/lib/python3.10/site-packages/samba/gensec.so [snip] Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: upgrade 4.14.8 -> 4.14.10Yi Zhao2021-11-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a security release in order to address the following defects: CVE-2016-2124: SMB1 client connections can be downgraded to plaintext authentication. https://www.samba.org/samba/security/CVE-2016-2124.html CVE-2020-25717: A user on the domain can become root on domain members. https://www.samba.org/samba/security/CVE-2020-25717.html CVE-2020-25718: Samba AD DC did not correctly sandbox Kerberos tickets issued by an RODC. https://www.samba.org/samba/security/CVE-2020-25718.html CVE-2020-25719: Samba AD DC did not always rely on the SID and PAC in Kerberos tickets. https://www.samba.org/samba/security/CVE-2020-25719.html CVE-2020-25721: Kerberos acceptors need easy access to stable AD identifiers (eg objectSid). https://www.samba.org/samba/security/CVE-2020-25721.html CVE-2020-25722: Samba AD DC did not do suffienct access and conformance checking of data stored. https://www.samba.org/samba/security/CVE-2020-25722.html CVE-2021-3738: Use after free in Samba AD DC RPC server. https://www.samba.org/samba/security/CVE-2021-3738.html CVE-2021-23192: Subsequent DCE/RPC fragment injection vulnerability. https://www.samba.org/samba/security/CVE-2021-23192.html See: https://www.samba.org/samba/history/samba-4.14.10.html Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* wolfssl: update to 5.0.0Oleksandr Kravchuk2021-11-081-3/+3
| | | | | Signed-off-by: Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* recipes: Update SRC_URI branch and protocolsRichard Purdie2021-11-0316-16/+16
| | | | | | | | | This patch updates SRC_URIs using git to include branch=master if no branch is set and also to use protocol=https for github urls as generated by the conversion script in OE-Core. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* netplan: fix hardcoded path for /lib/netplanYi Zhao2021-11-011-0/+2
| | | | | | | | | | The hardcoded path /lib/netplan causes a runtime error on multilib image: $ netplan try An error occurred: [Errno 2] No such file or directory: '/lib/netplan/generate' Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* bluepy: Fix permissions on tarballKhem Raj2021-10-202-1/+35
| | | | | Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Marco Cavallini <m.cavallini@koansoftware.com>
* bluepy: Set PV and correct syntax for RDEPENDSKhem Raj2021-10-201-7/+8
| | | | | | | | | | | Also organize the recipe to to match OE style Remove PYTHON_PN from DEPENDS, setuptools should be enough Correct setting LIC_FILES_CHKSUM Move setting git SHA to SRCREV Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Marco Cavallini <m.cavallini@koansoftware.com> Cc: Martin Jansa <martin.jansa@gmail.com>
* bluepy_git.bb: Added recipe for BluePy Python interface to Bluetooth LE on ↵Marco Cavallini2021-10-191-0/+17
| | | | | | | Linux (v2) Signed-off-by: Marco Cavallini <koansoftware@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* nng: update to 1.4.0Oleksandr Kravchuk2021-10-161-4/+2
| | | | | Signed-off-by: Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* networkmanager: update to 1.32.12Oleksandr Kravchuk2021-10-161-1/+1
| | | | | Signed-off-by: Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* networkmanager-openvpn: upgrade 1.8.14 -> 1.8.16zangrc2021-10-161-2/+1
| | | | | Signed-off-by: Zang Ruochen <zangrc.fnst@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* netplan: do not use -WerrorAlexander Kanavin2021-10-143-3/+31
| | | | | | | This addresses openssl 3.x deprecation warnings turning into errors. Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: upgrade 4.14.7 -> 4.14.8Yi Zhao2021-10-081-2/+2
| | | | | | | | Release notes: https://www.samba.org/samba/history/samba-4.14.8.html Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* snort: upgrade 2.9.18 -> 2.9.18.1wangmy2021-09-271-1/+1
| | | | | | | | | | snort 2.9.18.1 * snort/src/dynamic-preprocessors/dcerpc2/dce2_smb.c: Fixed possible memory corruption in SMB preprocessor. Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: Inherit pkgconfigKhem Raj2021-09-241-1/+1
| | | | | | | Fixes Checking for program 'pkg-config' : not found Signed-off-by: Khem Raj <raj.khem@gmail.com>
* mosquitto: Inherit pkgconfigKhem Raj2021-09-241-1/+1
| | | | | | | Fixes logging.c:(.text+0x218): undefined reference to `dlt_register_app' Signed-off-by: Khem Raj <raj.khem@gmail.com>
* firewalld: Inherit pkgconfigKhem Raj2021-09-241-1/+1
| | | | | | | | | Fixes ../firewalld-0.9.4/configure: line 3408: pkg.m4: command not found ../firewalld-0.9.4/configure: line 3422: syntax error near unexpected token `0.16' ../firewalld-0.9.4/configure: line 3422: ` PKG_PROG_PKG_CONFIG(0.16)' Signed-off-by: Khem Raj <raj.khem@gmail.com>
* crda: Inherit pkgconfigKhem Raj2021-09-241-1/+1
| | | | | | | Fixes /bin/sh: pkg-config: command not found Signed-off-by: Khem Raj <raj.khem@gmail.com>
* blueman: Inherit pkgconfigKhem Raj2021-09-241-1/+1
| | | | | | | | Fixes ../blueman-2.2.1/configure: line 15660: syntax error near unexpected token `PYTHON,' ../blueman-2.2.1/configure: line 15660: `PKG_CHECK_MODULES(PYTHON, python-${PYTHON_VERSION})' Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: upgrade 4.14.5 -> 4.14.7Yi Zhao2021-09-241-2/+2
| | | | | | | | Changelog: https://www.samba.org/samba/history/samba-4.14.7.html Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* autossh: set precise BSD licensesArmin Kuster2021-09-241-2/+4
| | | | | | | | One file is BSD-1-Clause while another is BSD-4-Clause Set and check accourdingly Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* mosquitto: upgrade 2.0.11 -> 2.0.12zhengruoqin2021-09-081-2/+1
| | | | | Signed-off-by: Zheng Ruoqin <zhengrq.fnst@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* networkmanager: upgrade 1.32.8 -> 1.32.10wangmy2021-08-261-1/+1
| | | | | Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* netplan: upgrade 0.102 -> 0.103wangmy2021-08-233-40/+30
| | | | | | | | | | 0001-Handle-enum-element-override.patch removed since it is included in 0.103 Add patch to fix bug for 32bit format string bug. Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* networkmanager: upgrade 1.32.4 -> 1.32.8Andreas Müller2021-08-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | =============================================== NetworkManager-1.32.8 Overview of changes since NetworkManager-1.32.6 =============================================== * firewalld: configure zones on "Reloaded" signal. * core: fix wrong MTU for bridge interfaces. * cloud-setup: fix gateway address for Aliyun cloud. =============================================== NetworkManager-1.32.6 Overview of changes since NetworkManager-1.32.4 =============================================== * core: fix adding stale local routes when address changes. * initrd: tag generated profiles with origin in user data. * core: introduce "allowed-connections" option to disallow profiles on a device. This allows to filter out profiles that originate from initrd. * core: introduce "keep-configuration" device option to forcefully activate a profile on start. * dhcp: handle filename/bootfile_name DHCP option and write it to device state file for initrd/kickstart. * initrd: add "ib.pkey=" command line option Signed-off-by: Andreas Müller <schnitzeltony@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* networkmanager: add PACKAGECONFIG for audit and selinuxYi Zhao2021-08-121-0/+3
| | | | | | | Add them to PACKAGECONFIG if enable selinux distro feature. Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* Convert to new override syntaxMartin Jansa2021-08-0328-169/+169
| | | | | | | | | | This is the result of automated script (0.9.1) conversion: oe-core/scripts/contrib/convert-overrides.py . converting the metadata to use ":" as the override character instead of "_". Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
* addcli: check for ns_get16 and ns_get32Khem Raj2021-08-032-1/+41
| | | | | | Fixes build with glibc 2.34+ Signed-off-by: Khem Raj <raj.khem@gmail.com>
* networkmanager: upgrade 1.32.2 -> 1.32.4wangmy2021-07-291-1/+1
| | | | | Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* firewalld: upgrade 0.9.3 -> 0.9.4zangrc2021-07-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a bug fix only release. $ git shortlog --grep "^fix" v0.9.3..v0.9.4 Eric Garver (10): fix(dbus): conf: setting deprecated properties should be ignored fix(dbus): properties: IPv4 and IPv6 should be true if using nftables fix(fw): when checking tables make sure to check the actual backend fix(ipset): nftables: use interval flag for "ip" types fix(rpm): applet: don't replace config modified by admin fix(rpm): logrotate: don't replace config modified by admin fix(ipv6_filter): match fwmark fix(direct): rule order with multiple address with -s/-d fix(nm): reload: only consider NM connections with a real interface fix(policy): warn instead of error for overlapping ports Fabrizio D'Angelo (1): fix(ipset): fix hash:net,net functionality Robert Richmond (1): fix(ipset): entry delete with timeout Ye Shu (1): fix(applet): Show a basic tooltip instead of HTML Signed-off-by: Zang Ruochen <zangrc.fnst@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* networkmanager: upgrade 1.30.4 -> 1.32.2Andreas Müller2021-07-084-202/+19
| | | | | | | Did not find hints upstream but musl build turned painless! Signed-off-by: Andreas Müller <schnitzeltony@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* blueman: upgrade 2.1.4 -> 2.2.1Andreas Müller2021-07-082-19/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Manually refresh 0002-fix-fail-to-enable-bluetooth.patch - it did not apply 2.2.1 Bugs fixed Hard dependency of DBusService on NetworkManager 2.2 New features Disconnect items in applet menu (plugin) Desktop notifications on connect / disconnect (plugin) Notifications with battery level for connecting devices (applet plugin) Stop discovery and retry connection for broken adapter drivers Auto-connect settings for supported services Changes Drop blueman-report Drop blueman-assistant Raise minimum Python version to 3.6 Raise GTK+ 3 version to 3.22 Raise minimum BlueZ version to 5.48 Allow opening device menus via keyboard (Shift+F10 or menu key) Add Ctrl+Q and Ctrl+W accelerators for closing blueman-manager Allow cancelling device connection attempts Improved passkey handling (fixed padding, highlighting, single notifitication) Hide devices with no name Bugs fixed Fix disconnecting NMDevice Exceptions from asynchronous DBus calls (getting picked up by tools like Apport or ABRT) DiscvManager plugin showed its icon unreliably Signed-off-by: Andreas Müller <schnitzeltony@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: add missing runtime dependency for pidlYi Zhao2021-07-011-1/+1
| | | | | | | | | | | Add libparse-yapp-perl to RDEPENDS for pidl. Fixes: $ pidl Can't locate Parse/Yapp/Driver.pm in @INC (you may need to install the Parse::Yapp::Driver module) Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: fix shebang for pidlYi Zhao2021-07-011-1/+1
| | | | | | | | | The shebang in pidl points to wrong location: $ pidl -sh: /usr/bin/pidl: /buildarea/build/tmp-glibc/hosttools/env: bad interpreter: No such file or directory Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: Don't guess dirs for perllocal.pod removingPersian Prince2021-06-241-1/+1
| | | | | | | | We're not living in a perfect world so avoid build failures like: ERROR: samba-4.14.5-r0 do_package_qa: QA Issue: samba-pidl contains perllocal.pod (/usr/lib/perl5/5.34.0/x86_64-linux/perllocal.pod), should not be installed [perllocalpod] ERROR: samba-4.14.5-r0 do_package_qa: QA run found fatal errors. Please consider fixing them. Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: Solve the dependency problem when installing Sambawangmy2021-06-231-2/+20
| | | | | | | | | Error Message: Problem: conflicting requests - nothing provides samba-pidl needed by samba-client-4.14.5-r0.aarch64 Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* snort: upgrade 2.9.17.1 -> 2.9.18zangrc2021-06-232-4/+4
| | | | | | | | Refresh the following patch: configure.in-disable-tirpc-checking-for-fedora.patch Signed-off-by: Zang Ruochen <zangrc.fnst@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* mosquitto: upgrade 2.0.10 -> 2.0.11zangrc2021-06-181-3/+3
| | | | | | | | -License-Update: notice.html does not exist in this version, use NOTICE.md to check. Signed-off-by: Zang Ruochen <zangrc.fnst@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* add CVE-2011-2411 to allowlistSekine Shigeki2021-06-111-0/+4
| | | | | | | This affects only on HP NonStop Server, so add it to allowlist. Signed-off-by: Sekine Shigeki <sekine.shigeki@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: upgrade 4.14.4 -> 4.14.5Yi Zhao2021-06-091-2/+2
| | | | | | | | Changelog: https://www.samba.org/samba/history/samba-4.14.5.html Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: disable check fcntl RW_HINTS when configureYi Zhao2021-06-092-1/+1
| | | | | | | | | | This fails on cross-compilation for musl and clang. Fixes configure error: Checking whether fcntl supports setting/geting hints: UNKNOWN Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* dhcp-relay: update 4.4.2 -> 4.4.2-P1Yi Zhao2021-06-091-4/+4
| | | | | | | | | | | | | | Changes since 4.4.2 (Bug Fixes) Corrected a buffer overwrite possible when parsing hexadecimal literals with more than 1024 octets. Reported by Jon Franklin from Dell, and also by Pawel Wieczorkiewicz from Amazon Web Services. [Gitlab #182] CVE: CVE-2021-25217 See: https://downloads.isc.org/isc/dhcp/4.4.2-P1/dhcp-4.4.2-P1-RELNOTES Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* dhcp-relay: disable backtrace in bundled bindYi Zhao2021-06-092-0/+32
| | | | | | | | | | | Disable backtrace in bundled bind to fix build error for qemuarm on musl. Fixes: bind/bind-9.11.32/lib/isc/.libs/libisc.so: undefined reference to `_Unwind_GetIP' Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* dhcp-relay: update bundled bind to 9.11.32Yi Zhao2021-06-092-6/+43
| | | | | | | | | | | | | | Update the bundled bind from 9.11.14 to 9.11.32. Fixes build error on qemuarmv5: stats.c: In function 'setcounter': stats.c:300:36: error: 'val' undeclared (first use in this function); did you mean 'value'? 300 | stats->counters[counter] = val; | ^~~ | value Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* netplan: Fix a warning with clangKhem Raj2021-06-093-7/+37
| | | | | | | Refresh musl patch to avoid fuzz Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Zang Ruochen <zangrc.fnst@fujitsu.com>
* netplan: upgrade 0.101 -> 0.102zangrc2021-06-093-95/+2
| | | | | | | | | 0001-dbus-Remove-unused-variabes.patch 0002-Makefile-Exclude-.h-files-from-target-rule.patch Removed since these are included in 0.102. Signed-off-by: Zang Ruochen <zangrc.fnst@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: update smb.confYi Zhao2021-06-051-29/+11
| | | | | | | | | | | | | | | | | There are some options are deprecated in smb.conf. Refer to https://salsa.debian.org/samba-team/samba/-/blob/master/debian/smb.conf to update it. * Remove the deprecated "syslog only" and "syslog" global options and replace them with the "logging" statement. * Remove wins support and wins server comments since WINS protocol is outdated. * Improve idmap config Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* samba: upgrade 4.10.18 -> 4.14.4Yi Zhao2021-06-0519-647/+307
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 4.10.x is EOL: https://wiki.samba.org/index.php/Samba_Release_Planning Upgrade to latest 4.14.x. Remove PACKAGECONFIG[gnutls] since the gnutls is now the mandatory requirement for samba. See: https://wiki.samba.org/index.php/Package_Dependencies_Required_to_Build_Samba#Mandatory Refresh patches: 16-do-not-check-xsltproc-manpages.patch 20-do-not-import-target-module-while-cross-compile.patch 21-add-config-option-without-valgrind.patch 0001-Add-options-to-configure-the-use-of-libbsd.patch dnsserver-4.7.0.patch iconv-4.7.0.patch 0001-samba-fix-musl-lib-without-innetgr.patch Drop patches: 0001-lib-replace-wscript-Avoid-generating-nested-main-fun.patch 0001-nsswitch-nsstest.c-Avoid-nss-function-conflicts-with.patch 0001-waf-add-support-of-cross_compile.patch 0002-util_sec.c-Move-__thread-variable-to-global-scope.patch CVE-2020-14318.patch CVE-2020-14383.patch glibc_only.patch smb_conf-4.7.0.patch Add new patches: 0007-wscript_configure_system_gnutls-disable-check-gnutls.patch 0008-source3-wscript-disable-check-fcntl-F_OWNER_EX.patch source3-wscript-disable-check-fcntl-RW_HINTS.patch Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* mbedtls: Add packageconfig for warning-as-errorsKhem Raj2021-06-041-0/+1
| | | | | | | Disable the options by default, as we use different compilers there are more warnings to handle then upstream Signed-off-by: Khem Raj <raj.khem@gmail.com>
* mbedtls: Upgrade to 2.26.0Khem Raj2021-06-031-1/+1
| | | | | | https://github.com/ARMmbed/mbedtls/releases/tag/v2.26.0 Signed-off-by: Khem Raj <raj.khem@gmail.com>