/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include "rmnet_descriptor.h" #include "rmnet_offload_main.h" #include "rmnet_offload_engine.h" #include "rmnet_offload_stats.h" #include "rmnet_offload_knob.h" static bool DATARMNET505c932e93(struct DATARMNETadd6ff90d0*DATARMNETc3ffad4b30){ struct DATARMNET1bffb1c388*DATARMNETbd1c0986f8=DATARMNETc3ffad4b30-> DATARMNET7ff34eacb7;__be32 DATARMNETae352fd67d;u8 DATARMNETf72fff5724= DATARMNETbd1c0986f8->DATARMNETf538480d20;DATARMNETae352fd67d=(0x89d+3341-0x14fb) ;if((!DATARMNETc3ffad4b30->DATARMNET5671455f38&&(DATARMNETf72fff5724& (0x32d+5244-0x1799)))||(DATARMNETf72fff5724&DATARMNETae352fd67d))return true; return false;}static bool DATARMNET4863e9c5ae(struct DATARMNET31caee06e2* DATARMNETd44a80d414,struct DATARMNETadd6ff90d0*DATARMNETc3ffad4b30){struct DATARMNET1bffb1c388*DATARMNETb5da236f91,*DATARMNET4e35bbb67d;u32 DATARMNETf5bcfe1e17,DATARMNET5d971be8b8;DATARMNETb5da236f91=DATARMNETd44a80d414 ->DATARMNET9a5f6d68d4;DATARMNET4e35bbb67d=DATARMNETc3ffad4b30-> DATARMNET7ff34eacb7;DATARMNETf5bcfe1e17=DATARMNETb5da236f91->DATARMNET686636af95 *(0x1cd7+2514-0x26a5);if(DATARMNET4e35bbb67d->DATARMNET686636af95* (0xee3+4488-0x2067)!=DATARMNETf5bcfe1e17)return true;for(DATARMNET5d971be8b8= sizeof(*DATARMNETb5da236f91);DATARMNET5d971be8b8DATARMNET7ff34eacb7;u64 DATARMNETd9527bfa5e;u32 DATARMNET8875527b54,DATARMNETfc02a09052;if(DATARMNET505c932e93( DATARMNETc3ffad4b30)){DATARMNET5d24865423(DATARMNETf410872acc);return DATARMNET08dbe31d07;}if(!DATARMNETd44a80d414->DATARMNET30d367f886)return DATARMNET7d8a4bb6b1;if(DATARMNET4863e9c5ae(DATARMNETd44a80d414, DATARMNETc3ffad4b30)){DATARMNET5d24865423(DATARMNETa5e27cdfa7);return DATARMNET6b149bc29f;}DATARMNET8875527b54=(DATARMNETc3ffad4b30-> DATARMNET798fafaf36->tcp_seq_set)?ntohl(DATARMNETc3ffad4b30->DATARMNET798fafaf36 ->tcp_seq):ntohl(DATARMNET4e35bbb67d->DATARMNET614032cc71);if( DATARMNET8875527b54^DATARMNETd44a80d414->DATARMNET956bd73340){ DATARMNET5d24865423(DATARMNETd13a32652d);return DATARMNET08dbe31d07;} DATARMNETfc02a09052=(DATARMNETc3ffad4b30->DATARMNET798fafaf36->gso_size)?: DATARMNETc3ffad4b30->DATARMNET5671455f38;if(DATARMNETfc02a09052!= DATARMNETd44a80d414->DATARMNET632219f39d){DATARMNET5d24865423( DATARMNET1cacdd7cfc);return DATARMNET6b149bc29f;}DATARMNETd9527bfa5e= DATARMNET3d487d950f(DATARMNETee792ef3a0);if(DATARMNETc3ffad4b30-> DATARMNET5671455f38+DATARMNETd44a80d414->DATARMNET5f92dbf405>= DATARMNETd9527bfa5e){DATARMNET5d24865423(DATARMNET7dbef260b1);return DATARMNET6b149bc29f;}DATARMNETc3ffad4b30->DATARMNET1e7926dc4c=false;return DATARMNET7d8a4bb6b1;}bool DATARMNETb25a21aeeb(struct DATARMNET31caee06e2* DATARMNETd44a80d414,struct DATARMNETadd6ff90d0*DATARMNETc3ffad4b30,bool DATARMNETc72284bb2d){int DATARMNET094475d445;if(DATARMNETc72284bb2d){ DATARMNET5d24865423(DATARMNET135dd1f8ca);DATARMNET3bdaf91675(DATARMNETd44a80d414 );DATARMNETf9d626d72b(DATARMNETc3ffad4b30);return true;}DATARMNET094475d445= DATARMNETb12f1716fd(DATARMNETd44a80d414,DATARMNETc3ffad4b30);if( DATARMNET094475d445==DATARMNET7d8a4bb6b1){DATARMNETfc01092f09( DATARMNETd44a80d414,DATARMNETc3ffad4b30);}else if(DATARMNET094475d445== DATARMNET6b149bc29f){DATARMNET3bdaf91675(DATARMNETd44a80d414); DATARMNETfc01092f09(DATARMNETd44a80d414,DATARMNETc3ffad4b30);}else{ DATARMNET3bdaf91675(DATARMNETd44a80d414);DATARMNETf9d626d72b(DATARMNETc3ffad4b30 );}return true;}