From patchwork Mon Nov 6 15:00:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Lautrbach X-Patchwork-Id: 10043737 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2276D602BF for ; Mon, 6 Nov 2017 15:44:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0233E29EE0 for ; Mon, 6 Nov 2017 15:44:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EB12929EE2; Mon, 6 Nov 2017 15:44:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from uhil19pa11.eemsg.mail.mil (uhil19pa11.eemsg.mail.mil [214.24.21.84]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CDE2229EE0 for ; Mon, 6 Nov 2017 15:44:05 +0000 (UTC) Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.2]) by uhil19pa11.eemsg.mail.mil with ESMTP/TLS/AES256-SHA; 06 Nov 2017 15:44:03 +0000 X-IronPort-AV: E=Sophos;i="5.44,353,1505779200"; d="scan'208";a="5510532" IronPort-PHdr: =?us-ascii?q?9a23=3AvDBbHhRzFDGAgScFdR58L6r+PNpsv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa6/YxGOt8tkgFKBZ4jH8fUM07OQ7/i4HzFcqsna+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe7x/IAmqoQnLtsQbjoRuJ6Q/xxDUvnZGZu?= =?us-ascii?q?NayH9yK1mOhRj8/MCw/JBi8yRUpf0s8tNLXLv5caolU7FWFSwqPG8p6sLlsxnD?= =?us-ascii?q?VhaP6WAHUmoKiBpIAhPK4w/8U5zsryb1rOt92C2dPc3rUbA5XCmp4ql3RBP0ji?= =?us-ascii?q?oMKjA28HvTisdtkqxVphyvrAF7z4LNfY2ZKP9yc6XAdt0YWGVBRN5cWSxfDI2y?= =?us-ascii?q?bIUADeQBM/tAr4T/ulcDowWxBRK3Ce/z1jNFnGP60bEm3+g9FwzNwQwuH8gJsH?= =?us-ascii?q?TRtNj7LrkdUfyvzKLVyzvMde5W2Svn6IfTaB8uvfGMVq93fMrJzUkgDR7FjkmK?= =?us-ascii?q?qYP+JTyYzf4NvHaG4OpgT+2vl3QrpB12ojiq38ohjJTCiIENyl3c6Cl0z4k4Kc?= =?us-ascii?q?e4RUJme9KoDpRduz+AO4drWs8uXX1ktSIgxrEbt5O3YjIGxIkkyhPRcfCLbYuF?= =?us-ascii?q?7xT+X+iLOzh4nmhqeLeniha39kiv1/PzW9Gv0FZPsipFit7Mtm0R1xDL6siIVP?= =?us-ascii?q?99/kC51DaTzQ/T8OBEIV0vlabBN54gwqI/lpoUsUjZGC/5hF72g7OMekUh++io?= =?us-ascii?q?7/zrYrTgppCCK495khzyP6shl8ClAek0LxICU3aU9OiizrHv4FX1QLBQgf03lq?= =?us-ascii?q?nZvoraJcMepqOhGA9azIIj6xe5Dze739UUhGIILFVYeBKBk4fmJUrOLevkDfa/?= =?us-ascii?q?n1uskDBry+rAPr36GJrBNHfDkLD/fbpl8U5T1BIzzcxD55JTErwBIvXzWknru9?= =?us-ascii?q?zEDh82KQq0zv3lCNV60IMeXHiAArSFMKzMq1+I/fgjI+6WZI8aoDz9MeQq5+by?= =?us-ascii?q?jX8lnl8QZaup3ZkNZ3+kHfRmOEKZYXztgtcfCmoKsA4+TPHliVKZTD5TYWqyX7?= =?us-ascii?q?8m6jE8EoKmAp/JRpqxj7yZwCe7AppWa3heCl+SCnjnaYOEW/YQaCKVOcJhkyIL?= =?us-ascii?q?Wqa/RIM70hGurgD6waJ9LuXI4i0YqY7j1N9t6uLOkhEy8zp0ANmD3GGJTmF5hX?= =?us-ascii?q?kHSCEs3KB4u0B9zU2D0adgifxCCdNT/+9JUhs9NZPE0uN6F8r9Whjac9iVT1am?= =?us-ascii?q?R8mpDisqTtIt2dMOZVhyG8m6hBDZwyWqG6MVl6CMBJEs86Lc2WTxKNh5y3nY0a?= =?us-ascii?q?kukUUmQtFPNGC9ga5/7xbcB4jMk0qDlqaqcb8T3CnC9WuZymqOpk5YWhZqUarZ?= =?us-ascii?q?RXAfelfWrdPh60LCTr6uDrInPxBEyc6GM6dKa9vpgU9ARPj5ItTeYGOxm3muCh?= =?us-ascii?q?qSwLODcpbqcX0H3CrBEEgEjxwT/XGeOAcgHieuuXjeDD11FV/0e0Pj6/N+qHKg?= =?us-ascii?q?Tk8sywGFdVFu2KSv9h4Sn/ycROsZ3qgYtyc5tzV0AFG90srYCtqBowphebtTYc?= =?us-ascii?q?km7VdJy23Wqgt9Poa6IKB6nF4edAZ3sF3y2BVrEIlAltIqrHwyxgpoNa2YyE9B?= =?us-ascii?q?dy+f3Z3oNL3XMHP9/BazZK7XwVHTy9OW+r8O6PghsFXishqpGlAl83V93Nlfy2?= =?us-ascii?q?Gc6YnSDAoOTZLxVV469xtgqLHZZSk9+pjZ1X52Pqm3tT/CxsglBOw/yhavZ91f?= =?us-ascii?q?Kr+LFBfuE80GAMijMPYllEWzbhIFIu9S7rU5MNm6ePuDwqKrO/xgnD2+h2Rd/I?= =?us-ascii?q?99yl6M9zZ7SuPQw5kK2fWY0RWcVzfgjFahtdv6mZtYajETAGW/zzTkBI9LaaFo?= =?us-ascii?q?e4YEF3uuKdWtxtpin57tR2JY9Fm7ClMcxcCmZAGfb1P43Qxfz0gXp2KomTegxT?= =?us-ascii?q?xujz4ptraf3DDJw+n6bxoHNHRLRG55jVfwOoW0lNYaXE+mbggsjhSl41z2x65F?= =?us-ascii?q?q6RjN2PTW1tHfzDqL2F+Vau9rrSDbNRL6JM0rypXSv+8bEuESrHjuRsVyD7jH2?= =?us-ascii?q?5EyDA8bTGqtY3znwZmh2KFMHZzsH3ZdNlsxRjC+dPcRORe3j4dSSZkjjnXA0Sz?= =?us-ascii?q?MMOy/dWIjZvDtP6xV365XJ1JbSbr1Z+AtDe85WByHx2/nuy8msHgEQggyyP0y9?= =?us-ascii?q?lqVSLOrBbzeYTr06W6MeR9cUlyA1/w8c16GptxkoEonpEfxWAahomJ/XoAiWrz?= =?us-ascii?q?NdRb2bnibHYUXj4E3drV4Anj2E1+IXOE3Jn5Vm2cwstnZtm1fngW1jg7789UFK?= =?us-ascii?q?ee9KZEkjdtolqksQLRZuBwni0ayfsq7H4VnfsJtxYqziSTGb0SBlRYMjD3lxiS?= =?us-ascii?q?6NC+tqpXbn61cbeszEp+gcyhDLaarwFfRnn5fIwiEDRz7sphNlLMy3vz5Z/4eN?= =?us-ascii?q?XKatITrBKUmQ/aj+dJMJIxiuYKhS1/NGLlp3Il1uo7ggJ23Z6guoiHN3ti/Lii?= =?us-ascii?q?Dx5FLT36edkT+ir3gaZFmcaWwpqvEYl/FTUFW5voV/2oHywIufThKQmODCU2qm?= =?us-ascii?q?2HFrrHAQ+f9EBmomrRE5CtKn6aP2cZzdN/SxmdPkBfhh4bXCkilJ4jCg+q3NDh?= =?us-ascii?q?cFt+5j0J/l73sAZMyuZzOhbjU2ffuAepZi46SJeFKhpa9AZC513aMcaG9OJ8Az?= =?us-ascii?q?lY/oG9rAyKMmGbZARJDWUXVUGfAlDjObeu5dfe/OiEGuq+L/zOYbCQpuBEUfeH?= =?us-ascii?q?246v2JN8/zmQLsWPImViD/oj10pNR395HdjZmzIKSyEMmSLCcdOUpBCm+iJtts?= =?us-ascii?q?C/6vPrWADx6oSTF7teK9Jv+wq5ga2bLe6fmD55KSpE1pML3XLI0qIT3VAIhyFr?= =?us-ascii?q?bTatFbMAtC7WQa3KhqBXCgQXayRpNMtH96g8xBVCOdbHitPp0b51lvA1C01bWl?= =?us-ascii?q?P8gcGmf8oKI326NFPcH0uELqiJJTjRz8Hwe6O8RqVajP9IuB2opTabD0jjMyyF?= =?us-ascii?q?lznzTR+vKflMgTqVPBxfooG9aQptCWbiTNLgcBK7NsN4jTwszr0wnH/KMnQcMT?= =?us-ascii?q?dkeUNXsrKQ9T9Ygul4G2FZ9XVqNu6ImyKY7+nDNpYWquFnAj9qmO1G+ng60KVa?= =?us-ascii?q?7CVFRPxzhSvTocVjrE2mk+mV1zpnSwBCqzhRi4KXpkViPqPZ+oNHWXbe8xIH9X?= =?us-ascii?q?+QBAgSp9t5Ft3vvLhdyt7OlKL3LDdN7cnU8NAGCMfKMsKHN2AtMR3zGD7bFAEF?= =?us-ascii?q?VyKkNXnDh0xBl/Gf7maarpk1qpjrnpoDUaJUW0IuGfMbEEtlGsYOIJBtXjMrib?= =?us-ascii?q?SbltIH5WKirBnNQ8VXporIVv2IDvXxNjmUlr5EZwMWzrP+KIQcLIz720h5ZVl9?= =?us-ascii?q?k4XGAU3QXcpCoid5dA87vF1N8GRiTm00w0/ldgSt4HoJGf6umR43ixVxYeI2+z?= =?us-ascii?q?f25Fc4OFnKqTAsn0k2nNXqnSqecCXtLKuqW4FZFTb0vVArMpznWwZ1cRGynUt8?= =?us-ascii?q?OTfCWb1elb9geHtoiA/boptPBeRTTatfYB8TxPGbffMo3kpAqi+/309I+fPFCY?= =?us-ascii?q?d+lAstaZOstWxP2xl9Y9EvP6zfOKpJw0NLiaKPpC+ny+cxwAEGJ0YX7myTeDQE?= =?us-ascii?q?uEoWObk6PyCo5PBj6RSemztff2gBT+clreh09kM8JuuA1Dnt3KRZKkCrMOyeIb?= =?us-ascii?q?iZtHbcms6VWFMw118Ilklf8bhwz8gjb1KeV1ozw7uJCxQJKc3CJBlRb8pV7njc?= =?us-ascii?q?YyCOsOTKwZ9uMIW9EP3oQfWJtKYOjUKuBBwpEJgU7sQdApms11nVLdz5I74ByB?= =?us-ascii?q?Ut4hnrJVqeAftVfxKLlSsIrNukzJ9rx4VdIC8SAXllOyWt+rnXvhMqgOaEXNou?= =?us-ascii?q?f3gVQo4ENnUwWM2mhiJUpGpAAyet0uIYyQmC6Dn8qj7WDDbic9ppfO2Uag90CN?= =?us-ascii?q?Gq5TU/9LC7iULW8pXbIGH6KdRiu9/U5OwHppaGC+lbQqJnv0fahYZYW2SgU3TT?= =?us-ascii?q?Ht6tO5jwd44sYMT7CnagSFO/jS41QtzwPNaqIKmIhx3oRYZKv4ma2jAjKdGyFi?= =?us-ascii?q?sEFxd2ue4D+Lp2ZRcfbJojfR7oqwM+OrSlLwec09WhX3iiJiNTT/hfy+W6YLpX?= =?us-ascii?q?wDA3Y+ChyXsvVJc6w/C58U4QXp0KiA/Rxeq7bYlETSfzAmBdexnIpSchjGduKO?= =?us-ascii?q?Ayz/wlzxzVr1kTLSqLdPdzZ2xev9AwH1SSIW95CmAgXV+TkZLD4hKw37AV5yZd?= =?us-ascii?q?hdBU0exZv3j+uZ/fZCmsVrSyp5vIqSQtcd8orrZtPozkJ8uJqInRnifDTJXKtA?= =?us-ascii?q?2KTjK6HeJAmtdMOCJYXOVImWY9NMMau4pO81Y+W9wiKLxIDKksorGqZiR+DS4O?= =?us-ascii?q?0yAWS4OA0CYFguem1LvQjg2Qf4g6MBwYrJVChcMQUzRsbSMEo6+sTJ7bl3OeSm?= =?us-ascii?q?cRPgcc8wBM5AMGlo9/euDl4YXITJ9Qyz5Yuf10SC7LGoNu91TlVmGcmUL4R+m5?= =?us-ascii?q?k+y1wQJSy+rh09cBVBFjCUhdxuNWlkoyJ7F0MKQQv5DFvSGWek/gu2Lt0uSmLk?= =?us-ascii?q?FLycLIb134EJbFtW3kXy0E/n0UQZVAyGvRFJQVlwp5Zr0mpFBLIIChYUbx+SAr?= =?us-ascii?q?x55uH7mjTsCrxlAlrXkcSyetCdpBBPlssEjLVz19f5CrtJLlNo1ITW9K5Z2drU?= =?us-ascii?q?1VkEZ2Pi64yJpcKt1N7SUWUDhJvzqdoMO4SNdf1s9uE58MPtB/tm/hGKNDPZic?= =?us-ascii?q?uGE2tqDqynDC4Tw8tkm1xCmrEa+iU+1Z53EeGhkuJ2mGqkkgFfEs/X3W8l/QqV?= =?us-ascii?q?174vlUBqCXjUpvpDZyAIpOCixO1XC/IFR5VGNGvPlCKKTJb8xcROE/ZR2oOxMg?= =?us-ascii?q?DvMpwlKG/Vpqknfjfyx9qBZV9zrbXwYqSSkfmq3tliEGqsG7JT8aTIpFYi4vby?= =?us-ascii?q?jZNw6Wmz1bsRhEZk52XJAZB8pK9KsA3YtI5MbCT1ijKT0dVhx4Kg04yeZflVJE?= =?us-ascii?q?sEiAYyDSExendfbVvR1rZsqRqMmpLOrn8wtZloznt/03+LsZS32ghwKtXcjUr5?= =?us-ascii?q?Xgud2SqkuOaKD4PvWkYX/aUDjDlw2/has/ApnR+CjTLRBbJIVkxnoifZjhE3TE?= =?us-ascii?q?PRBcK6IcPUpbWrhwac9areBCe89kZKEJ9LdxBhKdWBzgBpGgoeJbLlbXWTTeNT?= =?us-ascii?q?+O8vK+oYLU6bzSV/TgataLx3bdTKJ9Jo165iXjG7f2zY9e/VL72vJ3+UN+TVjJ?= =?us-ascii?q?LTyBrMj7KQwR/8SicFXtvoEyHTzKGphwiGTiyltGd8UJXy2g6I4Yx49B6HbsVe?= =?us-ascii?q?J41VD+sO9I+Ll+7ok3+LRpxt2qJarJLPRarEtnAgSVBgp295UiGm5/R3tLbu8W?= =?us-ascii?q?MvfRcrwTjdrypODvC6wX9BqV9vRbadTdIUHBlNO/CjaBRhNahwoBtSQVLg2H1/?= =?us-ascii?q?6CgaN0T9iqpfTh0EI3/1e+NgIGzKxq5Yqc9aqIue7Xbx/VzbcaX6jnXd78oao3?= =?us-ascii?q?tEOT//IkkqQCemtvYw2oCOIdTNISxn/8zaA2yiIhC8HDH7Pl+PNYUnI2gDLhlI?= =?us-ascii?q?5nH1UXHPMUEqCH/YJAkWckg+bZLMEZcrhemmaTEh6pCrkCyXqw5iuWJmllhwvC?= =?us-ascii?q?0xD2QWO99l/5tzR4QTfWz9f+jkVVSqS3BV1MUCazPk94qjyPNhLytNXroaQ18F?= =?us-ascii?q?02Mmv8udKIk2uhPq9XH8LhK9GHJCk0pUgYjJsvSdyz14EbHsC9INQK8H1kaPvR?= =?us-ascii?q?9X+rmTdbo6hbn4re/t2V+vLPEHmklK2arrWAyStWyncmoF4/7cqgOevW592QRP?= =?us-ascii?q?So1XgeQDtjuwfbWB61sLPbpUgOOUOXyEfLhJAKPtZB0Hk510Dp/vIsT84o+QVF?= =?us-ascii?q?CInAe+0NqizpNDvz21afbMo9VjOC3DtPAlL1DV54FbAn12Lxp8LIm23f+18pRo?= =?us-ascii?q?lsb0zonwF3D4EjJE0x71gY3zQMHhIQaRCBC7GoH17qIZEDVUgZZhSNxKK6dbsv?= =?us-ascii?q?3U1v3rOv4/febfRmCKoRKvldjgCPnF9BGpIVqKEeW6xze1tc9K7RuwjjBJPqX+?= =?us-ascii?q?D8mnosKfK1Qs5b8ccDt3sh+Aq/RASv6Y1F77kFjJCEbKlEYYLDvMpk9Udo+SYP?= =?us-ascii?q?djBRgBh4lx65Tfocq/7n4tfBtpqn9P2jW7ssR+UY9hg0G35xj4Dqj1A5vNHbze?= =?us-ascii?q?FcRZPJiY7n6gBCP2aKuJrG0xl7MecOJJikfKx++HUbJygTPHYOPduKa/Yi4y9i?= =?us-ascii?q?KijT50dYDsMKe9wYINLHmRpIhU3xRLFT6s3bF0eXC4htccAo8233yDcy/ZsnTO?= =?us-ascii?q?ng7D62JZbC71BCJP5DiDtjlMjCpecP2/bSDjYY4WWBYRhv3iyC04WNC+r3/eiU?= =?us-ascii?q?ztHUVk8JHikyU4hHPzqO4w2nRu2ylJXySQOZ8crzjZ0xdU6KQXyxhqsFuL5WEe?= =?us-ascii?q?FckiX7wiReFoftivKar9Ws83BXukRaHoh86xPFGaNfPoh0OBnjmcmrQ1JzBi3h?= =?us-ascii?q?d83OcRououWWzP8W4+piL0v+eZMbIhUcxrL47npVTg1uRKTqsVaZWeIRecZpSf?= =?us-ascii?q?LFrnBT8oJgKK4PMUODpJzrsDdHslQ2DxIoaLMqqDxVaFXOlhVPW6nooL4Alhcc?= =?us-ascii?q?UdlhtE9NB2K/ImQ+6iHDVaRIkaaRCfsV8i6JQqwJSUVoPTt0Qwmp15V2Z7upgf?= =?us-ascii?q?dHv3tEnixjrvgq3ThmSQCyuCL2oaICxy4g9Ku+tDofpXxPVv+enDvQCVVf0PQK?= =?us-ascii?q?ir8RC3nm6Vy7bngMco/y4L18KMT78okh5XU/bgk5cy0AQ+ugFzn6j7mUDYyXrN?= =?us-ascii?q?JcmBmNtd3Mbb+zLSkSLrM9yRbiR3hhzAfThxNo8GoXQjW68tAoPoK9OdwqxiCw?= =?us-ascii?q?A2jUaE4M4r9VsMv2rVMLUOo2aVZ6zWV/08iIWi4NS9LLG2oviAgrd3lEeopZ6R?= =?us-ascii?q?AGD6koniqIvq5e8wERYTfUEYel+o7LkMfKw3Y9TtBqxmTIqa2DnJ8q1mNqm89s?= =?us-ascii?q?5C6UpHsSb/DYU9NrAnXrzYhQ1+r+Z+m2v+AcTItmz6ihUOMcMsa95GS6wpJqWl?= =?us-ascii?q?Wqxr4GBVq2LPcDxqvHUyeiUWCYV/qEc2yNnzYhLEH//hipLlwyaMdPsUA9KO/C?= =?us-ascii?q?iYBGmw3mS7N0ST2apUXHw2w7LeMaawU2tZ+pegwSVu4RZvSTKvY1zf07CVsMc2?= =?us-ascii?q?XJEjVsB++xq16tk5BxO2987kXifeTt7gfmPcOVGhkAD4HXtYZx+figSWKaJX9g?= =?us-ascii?q?zQF9PFVu9+jBCVs9rOlcfIiNndLIndR0zfYFd+txMS06otMTnoNj6Y+J0MaFaB?= =?us-ascii?q?3RypfyJcrJoviDGPDfzl4lemddUrYDZgP1/Yo6NMYjW7LPBbtZoQgcBa8iTZwk?= =?us-ascii?q?LWj+6KF0LAJ1cg7Wf7m0nMjqpuSVaZtQpn/W6E8wLSjGtx0E0Py0QhRxb4q2iH?= =?us-ascii?q?XqPJAwWjVBosVvChR8H4tPHNgPohG6A56ShKG7i9ix+151u+8Krar8EPbK28ql?= =?us-ascii?q?349pRZhV+VSLPCrNBKlsmklljOGygvDa0pnrCMPiYsgJVO5hTW7AdLDGH5+zKj?= =?us-ascii?q?WUOsLzY0RG6aKT0KplUhWNYyD0R7GGtCOhNPp44Eg2yZd1fPTNwzw37rHa2dzy?= =?us-ascii?q?Z2dBqiels3GJKMgX0FufHuHaXhRJWdKZ4W1lGusRdoKy++AQYvI4x93J2wRv9n?= =?us-ascii?q?xm2daZOaKopU+Ejlp/fI/HNkHg8zw0VYkDPFK0Nk560jyRkWjUHXkJdpvsEsJq?= =?us-ascii?q?mtvAS0W16g=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2CTAQDGggBa/wHyM5BbHAEBBAEBCgEBgwgpA2RuJ44cdI4?= =?us-ascii?q?mj16IZIINDhgDigo/GAEBAQEBAQEBAQFqKII4JIJDAwMBAnkDCQEBOAEPCAMBU?= =?us-ascii?q?xkFiE2BRA0DrS6LOYMuggeBU4Zvg30BhS4BBIomhziQMIdmg2eDUYVRDYJ0iHO?= =?us-ascii?q?HTZYWgTkfOIFsVSUVSYJkCYRXdok0DRgHghYBAQE?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 06 Nov 2017 15:44:02 +0000 Received: from prometheus.infosec.tycho.ncsc.mil (prometheus [192.168.25.40]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id vA6Fhpgp003390; Mon, 6 Nov 2017 10:43:54 -0500 Received: from tarius.tycho.ncsc.mil (tarius.infosec.tycho.ncsc.mil [144.51.242.1]) by prometheus.infosec.tycho.ncsc.mil (8.15.2/8.15.2) with ESMTP id vA6Fho7Z112003 for ; Mon, 6 Nov 2017 10:43:50 -0500 Received: from goalie.tycho.ncsc.mil (goalie [144.51.242.250]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id vA6FhnoU003388 for ; Mon, 6 Nov 2017 10:43:49 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1C0AQBFggBa/ycWGNZbHAEBBAEBCgEBg?= =?us-ascii?q?wgpA2RuJ44cdI4mj16IZIIRChMIhSAChGg/GAEBAQEBAQEBAWuFRwZ5EDkBF1c?= =?us-ascii?q?ZiFKBRA0DrSuLBwEBCCiDLoIHgVOGb4N9AYUuBYomhziQMIdmg2eDUYVRDYJ0i?= =?us-ascii?q?HOHTZYWgTkfOIFsVSUVSYJkCYRXdok0DRgHghYBAQE?= X-IPAS-Result: =?us-ascii?q?A1C0AQBFggBa/ycWGNZbHAEBBAEBCgEBgwgpA2RuJ44cdI4?= =?us-ascii?q?mj16IZIIRChMIhSAChGg/GAEBAQEBAQEBAWuFRwZ5EDkBF1cZiFKBRA0DrSuLB?= =?us-ascii?q?wEBCCiDLoIHgVOGb4N9AYUuBYomhziQMIdmg2eDUYVRDYJ0iHOHTZYWgTkfOIF?= =?us-ascii?q?sVSUVSYJkCYRXdok0DRgHghYBAQE?= X-IronPort-AV: E=Sophos;i="5.44,353,1505793600"; d="scan'208";a="108212" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.34]) by goalie.tycho.ncsc.mil with ESMTP; 06 Nov 2017 10:43:50 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3Ac6MO+BNYIVOwT2f+t4sl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0Lf7yrarrMEGX3/hxlliBBdydt6oczbeK+P+7EUU7or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRp?= =?us-ascii?q?OOv1BpTSj8Oq3Oyu5pHfeQpFiCahbb9oLBi7ogrdu8sYjIB/Nqs/1xzFr2dSde?= =?us-ascii?q?9L321oP1WTnxj95se04pFu9jlbtuwi+cBdT6j0Zrw0QrNEAjsoNWA1/9DrugLY?= =?us-ascii?q?TQST/HscU34ZnQRODgPY8Rz1RJbxsi/9tupgxCmXOND9QL4oVTi+6apgVRnlgz?= =?us-ascii?q?oFOTEk6mHaktF+gqJFrhyvpBJwwYDUbZqJOPZiZK7RYc8WSXZdUstXSidPApm8?= =?us-ascii?q?b4wKD+cZJ+hXsZX9p0ETphW4HwasGf/vyiVTiXDswaI60/kqHAbe3AwkBd0OrW?= =?us-ascii?q?jUrM/uO6gISu211rfHwijDb/xMxTfx8pTHchckofyVW797bMnfyVE3Gg/bk1md?= =?us-ascii?q?ppbpMy2a2+gXrWSX8fBsWOyrhmI/tQ19vjyiyt0xhoTHmI4Z0E3I+CZ3zYovO9?= =?us-ascii?q?G1S0h2asO+HpRKrSGVLY52T9siQ252vCY6zaULuYO4fCcUzJQr2hrSa+SdfISU?= =?us-ascii?q?5h/vTvieLil9hHJ+d7KznROy/lKhyu34TMW01VdKri5dntnNsHACyQDT59CZRv?= =?us-ascii?q?dg8UqtwyiD2g/J5u1aP0w4j6TWJpo5zr41jJUTsEDDHiHsmEXxia+bbl0k+uyy?= =?us-ascii?q?5OT6frXmvISTOJVvhwHkLKshh8y/Dv4kMgQUQ2eb/uG82KX5/ULlWLVKkuE2kq?= =?us-ascii?q?7BvZDBO8sboq+5AwlI0ocs8Bu/Ezen38gYnXkANl5FfgmHgJLzN1HBJ/D4E6T3?= =?us-ascii?q?v1P5izpvxvbbLpX9E57NKT7Fi76ncrFjuGBGzw9m9d1D/dpwA6wdOvj6UU+54M?= =?us-ascii?q?TcBwIlKQa96/zqBNV0ysUVXmfZUfzRC7/brVLdvrFnGOKLfoJA4Ds=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0D/AQDGggBa/ycWGNZbHQEFAQsBgwgpA?= =?us-ascii?q?2RuJ44cdI4mj16IZIIRChMIhSAChGg/GAEBAQEBAQEBAQFqKII4IoJFBnkQOQE?= =?us-ascii?q?XVxmIUoFEDQOtLosHAQEIKIMuggeBU4Zvg30BhS4FiiaHOJAwh2aDZ4NRhVENg?= =?us-ascii?q?nSIc4dNlhaBOR84gWxVJRVJgmQJhFd2iTQNGAeCFgEBAQ?= X-IPAS-Result: =?us-ascii?q?A0D/AQDGggBa/ycWGNZbHQEFAQsBgwgpA2RuJ44cdI4mj16?= =?us-ascii?q?IZIIRChMIhSAChGg/GAEBAQEBAQEBAQFqKII4IoJFBnkQOQEXVxmIUoFEDQOtL?= =?us-ascii?q?osHAQEIKIMuggeBU4Zvg30BhS4FiiaHOJAwh2aDZ4NRhVENgnSIc4dNlhaBOR8?= =?us-ascii?q?4gWxVJRVJgmQJhFd2iTQNGAeCFgEBAQ?= X-IronPort-AV: E=Sophos;i="5.44,353,1505779200"; d="scan'208";a="5510513" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from ukel19pa09.eemsg.mail.mil ([214.24.22.39]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 06 Nov 2017 15:43:48 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;a02582bf-d701-4b64-88d3-a8a720328818 Authentication-Results: ukel19pa19.eemsg.mail.mil; dkim=neutral (message not signed) header.i=none X-EEMSG-check-008: 269762451|UKEL19PA19_EEMSG_MP12.csd.disa.mil X-EEMSG-SBRS: 3.5 X-EEMSG-ORIG-IP: 209.132.183.28 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0B9AAATfABahxy3hNFbHAEBBAEBCgEBgwgpAWZuJ44cdI4mj16IZIIRChuFIAKEaD8YAQEBAQEBAQEBEwEBAQoLCQgoL4UfAwN5EDkBF1cZiFKBRA2tb4sHAQEIKIMuggeBU4Zvg30BhS4FiiaHOJAwh2aDZ4NRhVENgnSIc4dNlhaBOR+CJFUlFUmCZAmCY4F0QDaJNA0YB4IWAQEB X-IPAS-Result: A0B9AAATfABahxy3hNFbHAEBBAEBCgEBgwgpAWZuJ44cdI4mj16IZIIRChuFIAKEaD8YAQEBAQEBAQEBEwEBAQoLCQgoL4UfAwN5EDkBF1cZiFKBRA2tb4sHAQEIKIMuggeBU4Zvg30BhS4FiiaHOJAwh2aDZ4NRhVENgnSIc4dNlhaBOR+CJFUlFUmCZAmCY4F0QDaJNA0YB4IWAQEB Received: from mx1.redhat.com ([209.132.183.28]) by ukel19pa19.eemsg.mail.mil with ESMTP; 06 Nov 2017 15:00:53 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 96D377EA8F for ; Mon, 6 Nov 2017 15:00:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 96D377EA8F Received: from workstation.brq.redhat.com (unknown [10.43.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id B9EB55D9C7; Mon, 6 Nov 2017 15:00:48 +0000 (UTC) X-EEMSG-check-009: 444-444 From: Petr Lautrbach To: selinux@tycho.nsa.gov Date: Mon, 6 Nov 2017 16:00:39 +0100 Message-Id: <20171106150040.25300-3-plautrba@redhat.com> In-Reply-To: <20171106150040.25300-1-plautrba@redhat.com> References: <20171103082211.GA8075@pl-rpi.tpb.lab.eng.brq.redhat.com> <20171106150040.25300-1-plautrba@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 06 Nov 2017 15:00:49 +0000 (UTC) Subject: [PATCH 2/3] python/semanage: Don't use global setup variable X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP In order to do that we need to propagate args into seobject objects and use args.store to get a store name. Signed-off-by: Petr Lautrbach --- python/semanage/semanage | 40 +++++++++++------------------ python/semanage/seobject.py | 62 +++++++++++++++++++++++---------------------- 2 files changed, 47 insertions(+), 55 deletions(-) diff --git a/python/semanage/semanage b/python/semanage/semanage index 8acfc855..bcac20b2 100644 --- a/python/semanage/semanage +++ b/python/semanage/semanage @@ -89,16 +89,6 @@ class CheckRole(argparse.Action): newval.append(v) setattr(namespace, self.dest, newval) -store = '' - - -class SetStore(argparse.Action): - - def __call__(self, parser, namespace, values, option_string=None): - global store - store = values - setattr(namespace, self.dest, values) - class seParser(argparse.ArgumentParser): @@ -192,7 +182,7 @@ def handleLogin(args): handle_opts(args, login_args, args.action) - OBJECT = object_dict['login']() + OBJECT = object_dict['login'](args) OBJECT.set_reload(args.noreload) if args.action is "add": @@ -211,7 +201,7 @@ def handleLogin(args): def parser_add_store(parser, name): - parser.add_argument('-S', '--store', action=SetStore, help=_("Select an alternate SELinux Policy Store to manage")) + parser.add_argument('-S', '--store', default='', help=_("Select an alternate SELinux Policy Store to manage")) def parser_add_priority(parser, name): @@ -326,7 +316,7 @@ def handleFcontext(args): else: handle_opts(args, fcontext_args, args.action) - OBJECT = object_dict['fcontext']() + OBJECT = object_dict['fcontext'](args) OBJECT.set_reload(args.noreload) if args.action is "add": @@ -395,7 +385,7 @@ def handleUser(args): handle_opts(args, user_args, args.action) - OBJECT = object_dict['user']() + OBJECT = object_dict['user'](args) OBJECT.set_reload(args.noreload) if args.action is "add": @@ -446,7 +436,7 @@ def handlePort(args): handle_opts(args, port_args, args.action) - OBJECT = object_dict['port']() + OBJECT = object_dict['port'](args) OBJECT.set_reload(args.noreload) if args.action is "add": @@ -492,7 +482,7 @@ def handlePkey(args): handle_opts(args, ibpkey_args, args.action) - OBJECT = object_dict['ibpkey']() + OBJECT = object_dict['ibpkey'](args) OBJECT.set_reload(args.noreload) if args.action is "add": @@ -536,7 +526,7 @@ def handleIbendport(args): handle_opts(args, ibendport_args, args.action) - OBJECT = object_dict['ibendport']() + OBJECT = object_dict['ibendport'](args) OBJECT.set_reload(args.noreload) if args.action is "add": @@ -580,7 +570,7 @@ def handleInterface(args): handle_opts(args, interface_args, args.action) - OBJECT = object_dict['interface']() + OBJECT = object_dict['interface'](args) OBJECT.set_reload(args.noreload) if args.action is "add": @@ -620,7 +610,7 @@ def setupInterfaceParser(subparsers): def handleModule(args): - OBJECT = seobject.moduleRecords(store) + OBJECT = seobject.moduleRecords(args) OBJECT.set_reload(args.noreload) if args.action == "add": OBJECT.add(args.module_name, args.priority) @@ -663,7 +653,7 @@ def handleNode(args): node_args = {'list': [('node', 'type', 'proto', 'netmask'), ('')], 'add': [('locallist'), ('type', 'node', 'proto', 'netmask')], 'modify': [('locallist'), ('node', 'netmask', 'proto')], 'delete': [('locallist'), ('node', 'netmask', 'prototype')], 'extract': [('locallist', 'node', 'type', 'proto', 'netmask'), ('')], 'deleteall': [('locallist'), ('')]} handle_opts(args, node_args, args.action) - OBJECT = object_dict['node']() + OBJECT = object_dict['node'](args) OBJECT.set_reload(args.noreload) if args.action is "add": @@ -710,7 +700,7 @@ def handleBoolean(args): handle_opts(args, boolean_args, args.action) - OBJECT = object_dict['boolean']() + OBJECT = object_dict['boolean'](args) OBJECT.set_reload(args.noreload) if args.action is "modify": @@ -749,7 +739,7 @@ def setupBooleanParser(subparsers): def handlePermissive(args): - OBJECT = object_dict['permissive']() + OBJECT = object_dict['permissive'](args) OBJECT.set_reload(args.noreload) if args.action is "list": @@ -784,7 +774,7 @@ def setupPermissiveParser(subparsers): def handleDontaudit(args): - OBJECT = object_dict['dontaudit']() + OBJECT = object_dict['dontaudit'](args) OBJECT.set_reload(args.noreload) OBJECT.toggle(args.action) @@ -802,7 +792,7 @@ def handleExport(args): for i in manageditems: print("%s -D" % i) for i in manageditems: - OBJECT = object_dict[i]() + OBJECT = object_dict[i](args) for c in OBJECT.customized(): print("%s %s" % (i, str(c))) @@ -866,7 +856,7 @@ def mkargv(line): def handleImport(args): - trans = seobject.semanageRecords(store) + trans = seobject.semanageRecords(args) trans.start() for l in sys.stdin.readlines(): diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py index 1385315f..00246fdd 100644 --- a/python/semanage/seobject.py +++ b/python/semanage/seobject.py @@ -238,14 +238,16 @@ class semanageRecords: transaction = False handle = None store = None + args = None - def __init__(self, store): + def __init__(self, args): global handle self.load = True - self.sh = self.get_handle(store) + self.args = args + self.sh = self.get_handle(args.store) rc, localstore = selinux.selinux_getpolicytype() - if store == "" or store == localstore: + if args.store == "" or args.store == localstore: self.mylog = logger() else: self.mylog = nulllogger() @@ -328,8 +330,8 @@ class semanageRecords: class moduleRecords(semanageRecords): - def __init__(self, store): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) def get_all(self): l = [] @@ -440,8 +442,8 @@ class moduleRecords(semanageRecords): class dontauditClass(semanageRecords): - def __init__(self, store): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) def toggle(self, dontaudit): if dontaudit not in ["on", "off"]: @@ -453,8 +455,8 @@ class dontauditClass(semanageRecords): class permissiveRecords(semanageRecords): - def __init__(self, store): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) def get_all(self): l = [] @@ -522,8 +524,8 @@ class permissiveRecords(semanageRecords): class loginRecords(semanageRecords): - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) self.oldsename = None self.oldserange = None self.sename = None @@ -534,7 +536,7 @@ class loginRecords(semanageRecords): if sename == "": sename = "user_u" - userrec = seluserRecords() + userrec = seluserRecords(self.args) range, (rc, oldserole) = userrec.get(self.oldsename) range, (rc, serole) = userrec.get(sename) @@ -603,7 +605,7 @@ class loginRecords(semanageRecords): if sename == "" and serange == "": raise ValueError(_("Requires seuser or serange")) - userrec = seluserRecords() + userrec = seluserRecords(self.args) range, (rc, oldserole) = userrec.get(self.oldsename) if sename != "": @@ -660,7 +662,7 @@ class loginRecords(semanageRecords): def __delete(self, name): rec, self.oldsename, self.oldserange = selinux.getseuserbyname(name) - userrec = seluserRecords() + userrec = seluserRecords(self.args) range, (rc, oldserole) = userrec.get(self.oldsename) (rc, k) = semanage_seuser_key_create(self.sh, name) @@ -779,8 +781,8 @@ class loginRecords(semanageRecords): class seluserRecords(semanageRecords): - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) def get(self, name): (rc, k) = semanage_user_key_create(self.sh, name) @@ -1042,8 +1044,8 @@ class portRecords(semanageRecords): except RuntimeError: valid_types = [] - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) def __genkey(self, port, proto): if proto == "tcp": @@ -1317,8 +1319,8 @@ class ibpkeyRecords(semanageRecords): except: valid_types = [] - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) def __genkey(self, pkey, subnet_prefix): if subnet_prefix == "": @@ -1572,8 +1574,8 @@ class ibendportRecords(semanageRecords): except: valid_types = [] - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) def __genkey(self, ibendport, ibdev_name): if ibdev_name == "": @@ -1810,8 +1812,8 @@ class nodeRecords(semanageRecords): except RuntimeError: valid_types = [] - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) self.protocol = ["ipv4", "ipv6"] def validate(self, addr, mask, protocol): @@ -2046,8 +2048,8 @@ class nodeRecords(semanageRecords): class interfaceRecords(semanageRecords): - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) def __add(self, interface, serange, ctype): if is_mls_enabled == 1: @@ -2243,8 +2245,8 @@ class fcontextRecords(semanageRecords): except RuntimeError: valid_types = [] - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) self.equiv = {} self.equiv_dist = {} self.equal_ind = False @@ -2632,8 +2634,8 @@ class fcontextRecords(semanageRecords): class booleanRecords(semanageRecords): - def __init__(self, store=""): - semanageRecords.__init__(self, store) + def __init__(self, args): + semanageRecords.__init__(self, args) self.dict = {} self.dict["TRUE"] = 1 self.dict["FALSE"] = 0