From 1943e77b243e1495e172d93c996fd7ae55a25151 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 16 May 2019 15:12:42 +0200 Subject: [PATCH] server interface: ip made to use inet_ntop, mac address and ip to string made common --- .../bin/eigerDetectorServer_developer | Bin 289172 -> 289212 bytes .../slsDetectorFunctionList.c | 26 ++---- .../slsDetectorServer_defs.h | 1 + .../slsDetectorServer/communication_funcs.c | 16 ++++ .../slsDetectorServer/communication_funcs.h | 15 ++++ .../slsDetectorServer_funcs.c | 83 +++++++----------- slsSupportLib/include/versionAPI.h | 2 +- 7 files changed, 75 insertions(+), 68 deletions(-) diff --git a/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer b/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer index e8fc3dea528c8820f84b37f8838ef8fd606983d4..5381a6f4234bd31a83d3d0d144332d4cdc5c457f 100755 GIT binary patch delta 51869 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

cFMhiO%8+qV|wKPd`Dsy>`z9(Z~{=d-jUj zNoHPrwHbGt-rJ}l#YQ{jYcp6gV%oS~jS=?O{LL>L0~AS+y7sQ1O__~To7XJC&qc#z z(9|@XjF!>V#K~yy!PxKb)(~ro}z_@Uf!USV0x`98zXXGA7XLjxsPt+Svfj{ zv)`U3>R&hWmkj&fUW?G`;T}8O8D)Jl4$alVcP-3( zMPsf`+0J<|?sVkYtavhTjqTam6D@)3c9sGiCloLF&4HF>nwxLH>D9ubH%m0WuDRZN zxYjqj`s^@_cD&`eR%kXD(7aKi4R!VP7Akn)4w3&>sAcJ8cV4fLlf7da?Kq(+?drbG zisj$^VoZ?J8I$02!t3xZnM!-l9fQT)UAV8u~5LU|f@549|6S%b>SuDz_;IrMxx(OKvtqW9o6+#SNcC%oNrwP@&C zMh1zdpL_MDJT}XT&UF{uXJt{GJ}dq85wBP&38>xO)rXb_SO1UnnASWXt^0L{C=avh zndn?TPF#B@l&9k5%sst3>KFMun#RTd>DzwnG#8i;BJA#BDbku%HqRYj(NwV6`62@#uV5 zqalARO_%;^+7{MXl&_Jo8{V0Tx_3h@S;O6_S+h~{VSS?0F32M6f0Q=@;YlUstVr4)8oaEKc4~>vaynsXwk<7-+Vfp7tGkF@`ybVp zC4UpPCGK<7rc8(t0SCf)-b|Mvahhh*{*ObvWg87vsKZ#gr_jrA z;526g$+mee;=n1%BjOLQ(VYWzu?GVU;)KXlwqa)=6Ac2ZL-MLQO;io1XP6DfSbI(LP4Tqg$D zJlg4J6H8j`Blo#Z^jl{2cc;H#Wy`2VM-fzG=8NaGjM}G<*6Qh2yvjH5s&o`ub!P@v zd26h)%xuLfhl^EUa7lsIRrZCJuG((Ux=KImPM||0SYJx<>K%DB*l&@npy}@ znSctRaZhp_q~&@p6R0Aj<%&pj=9~bk2%CpTfyh6CyGtEQ)4Pb>M}|t%!cQbR=f^cO za*L8{Q~t6Gi$)i5A*!vge$=5|UM%(AyglJ(TRK}xr#%LTatWRGK#TcO&1}#2X%RPr zC5IMIWzBt+(~`L~jqzG}{cpAak-AM39piE1A+tZl=6SDLu@UN}X|cV~0%xDHC`}ou7@ZSV;mWB9X?X>@zce?vPr)h52_HX14Db@?C80&w=*i zf9h{z3)iU?hw!l?$7h`_(>MNal*_M*s?Qv(Nm%P=;D1u~TRlW&{c`R|71q;3_|1(X z|OWzDOs^ z&P>FqjCv+P9p(e*pU?i8H(|?i)_>%36T0=V<}V*)kfJGZ3qije&3u<@Uxz*9W0O#|D4wED^l#l=3N$Xaov%Eo^>Ee`%8l&|m(g>%(15uN)Hj7e41J z(nZQQq5Q{{BKI2$Ur{W|zcKS4M~Q>qyfyN{&7>hV#d40GU=h-NcgZg3IFl|71%idz zys|0%yXp1c?V~??AhNbJPqqGsb*Ha-^ya^A(~jRA-Tm8YdVC`a`DkHp^yho8ik!v) zURq>At-piw)p|gKnYhvjCSMb#i{>_$aH_s9PFOF_=KIF&E5F!@@j^dQ^_|84`zTt& zaqt|7otC6#-&t|#yTw#v^7ocb-{D+>YB0KQA7Ep=L==5Lol2X&xA2QM_L(j{#rz8^ z?zcIG6{7I+Kz`t=ICy!Ok-(rI7IW)4x}sxF@p4&hQWSl^d*F~wd2b9A$4`m7ub2&p z%iV%oJ$dB+c?5uLtES=QO1VurxU{9LdWwknaiG67?>-dDds9UAkKrS&_hVP8@hPGA zPPbs;xJ3NkVbb{Gt=P%7^tMXV6nkN;xb$NmCt_(E~DEWiV3T#UCV3B@hAdl1s z{lp&(y1EZ)9il<|Pr9Eh);~^oULDBa%@omBbzb_Cu)C@QJlJq?<|-E7x#IR!3;+76 z2>9ul(C@mr2*KPQVNst%0DVt?kq#f|7Bn3`ApZ3& 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 diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c index ca5614029..2395d6687 100755 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c @@ -21,6 +21,8 @@ extern int debugflag; // Global variable from communication_funcs.c extern int isControlServer; +extern void getMacAddressinString(char* cmac, int size, uint64_t mac); +extern void getIpAddressinString(char* cip, uint32_t ip); int firmware_compatibility = OK; int firmware_check_done = 0; @@ -1213,24 +1215,14 @@ enum externalCommunicationMode getTiming() { int configureMAC(uint32_t destip, uint64_t destmac, uint64_t sourcemac, uint32_t sourceip, uint32_t udpport, uint32_t udpport2) { #ifndef VIRTUAL FILE_LOG(logINFO, ("Configuring MAC\n")); - char src_mac[50], src_ip[50],dst_mac[50], dst_ip[50]; - int src_port = 0xE185; - sprintf(src_ip,"%d.%d.%d.%d",(sourceip>>24)&0xff,(sourceip>>16)&0xff,(sourceip>>8)&0xff,(sourceip)&0xff); - sprintf(dst_ip,"%d.%d.%d.%d",(destip>>24)&0xff,(destip>>16)&0xff,(destip>>8)&0xff,(destip)&0xff); - sprintf(src_mac,"%02x:%02x:%02x:%02x:%02x:%02x",(unsigned int)((sourcemac>>40)&0xFF), - (unsigned int)((sourcemac>>32)&0xFF), - (unsigned int)((sourcemac>>24)&0xFF), - (unsigned int)((sourcemac>>16)&0xFF), - (unsigned int)((sourcemac>>8)&0xFF), - (unsigned int)((sourcemac>>0)&0xFF)); - sprintf(dst_mac,"%02x:%02x:%02x:%02x:%02x:%02x",(unsigned int)((destmac>>40)&0xFF), - (unsigned int)((destmac>>32)&0xFF), - (unsigned int)((destmac>>24)&0xFF), - (unsigned int)((destmac>>16)&0xFF), - (unsigned int)((destmac>>8)&0xFF), - (unsigned int)((destmac>>0)&0xFF)); - + + int src_port = DEFAULT_UDP_SOURCE_PORT; + char src_mac[50], src_ip[INET_ADDRSTRLEN],dst_mac[50], dst_ip[INET_ADDRSTRLEN]; + getMacAddressinString(src_mac, 50, sourcemac); + getMacAddressinString(dst_mac, 50, destmac); + getIpAddressinString(src_ip, sourceip); + getIpAddressinString(dst_ip, destip); FILE_LOG(logINFO, ( "\tSource IP : %s\n" diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h index 3ab0c42f6..71bf95ca0 100755 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h @@ -47,6 +47,7 @@ enum {E_PARALLEL, E_NON_PARALLEL, E_SAFE}; #define NORMAL_HIGHVOLTAGE_OUTPUTPORT "/sys/class/hwmon/hwmon5/device/out0_output" #define SPECIAL9M_HIGHVOLTAGE_PORT "/dev/ttyS1" #define SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE (16) +#define DEFAULT_UDP_SOURCE_PORT (0xE185) /** Default Parameters */ #define DEFAULT_NUM_FRAMES (1) diff --git a/slsDetectorServers/slsDetectorServer/communication_funcs.c b/slsDetectorServers/slsDetectorServer/communication_funcs.c index 9dbfbacee..11de0f631 100755 --- a/slsDetectorServers/slsDetectorServer/communication_funcs.c +++ b/slsDetectorServers/slsDetectorServer/communication_funcs.c @@ -520,3 +520,19 @@ int Server_SendResult(int fileDes, intType itype, int update, void* retval, int return ret; } + + +void getMacAddressinString(char* cmac, int size, uint64_t mac) { + memset(cmac, 0, size); + sprintf(cmac,"%02x:%02x:%02x:%02x:%02x:%02x",(unsigned int)((mac>>40)&0xFF), + (unsigned int)((mac>>32)&0xFF), + (unsigned int)((mac>>24)&0xFF), + (unsigned int)((mac>>16)&0xFF), + (unsigned int)((mac>>8)&0xFF), + (unsigned int)((mac>>0)&0xFF)); +} + +void getIpAddressinString(char* cip, uint32_t ip) { + memset(cip, 0, INET_ADDRSTRLEN); + inet_ntop(AF_INET, &ip, cip, INET_ADDRSTRLEN); +} \ No newline at end of file diff --git a/slsDetectorServers/slsDetectorServer/communication_funcs.h b/slsDetectorServers/slsDetectorServer/communication_funcs.h index 633139740..cfe4b5637 100755 --- a/slsDetectorServers/slsDetectorServer/communication_funcs.h +++ b/slsDetectorServers/slsDetectorServer/communication_funcs.h @@ -52,4 +52,19 @@ int Server_VerifyLock(); */ int Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize); +/** + * Convert mac address from integer to char array + * @param cmac char arrary result + * @param size size of char array result + * @param mac mac address as an integer + */ +void getMacAddressinString(char* cmac, int size, uint64_t mac); + +/** + * Convert ip address from integer to char array + * @param cip char arrary result + * @param ip ip address as an integer + */ +void getIpAddressinString(char* cip, uint32_t ip); + #endif diff --git a/slsDetectorServers/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/slsDetectorServer_funcs.c index 7c318bc9c..b5aeaca75 100755 --- a/slsDetectorServers/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/slsDetectorServer_funcs.c @@ -2298,8 +2298,6 @@ int send_update(int file_des) { - - int configure_mac(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); @@ -2323,9 +2321,12 @@ int configure_mac(int file_des) { // dest ip uint32_t dstIp = 0; sscanf(args[1], "%x", &dstIp); - FILE_LOG(logDEBUG1, ("Dst Ip Addr: %d.%d.%d.%d = 0x%x \n", - (dstIp >> 24) & 0xff, (dstIp >> 16) & 0xff, (dstIp >> 8) & 0xff, (dstIp) & 0xff, - dstIp)); + { + char ipstring[INET_ADDRSTRLEN]; + getIpAddressinString(ipstring, dstIp); + FILE_LOG(logINFO, ("Dst Ip Addr: %s\n", ipstring)); + } + // dest mac uint64_t dstMac = 0; #ifdef VIRTUAL @@ -2333,23 +2334,19 @@ int configure_mac(int file_des) { #else sscanf(args[2], "%llx", &dstMac); #endif - FILE_LOG(logDEBUG1, ("Dst Mac Addr: (0x) ")); { - int iloop = 5; - for (iloop = 5; iloop >= 0; --iloop) { - printf ("%x", (unsigned int)(((dstMac >> (8 * iloop)) & 0xFF))); - if (iloop > 0) { - printf(":"); - } - } + char macstring[50]; + getMacAddressinString(macstring, 50, dstMac); + FILE_LOG(logDEBUG1, ("Dst Mac Addr: %s\n", macstring)); } - FILE_LOG(logDEBUG1, (" = %llx\n", dstMac)); // source ip uint32_t srcIp = 0; sscanf(args[3], "%x", &srcIp); - FILE_LOG(logDEBUG1, ("Src Ip Addr: %d.%d.%d.%d = 0x%x \n", - (srcIp >> 24) & 0xff, (srcIp >> 16) & 0xff, (srcIp >> 8) & 0xff, (srcIp) & 0xff, - srcIp)); + { + char ipstring[INET_ADDRSTRLEN]; + getIpAddressinString(ipstring, srcIp); + FILE_LOG(logINFO, ("Src Ip Addr: %s\n", ipstring)); + } // source mac uint64_t srcMac = 0; #ifdef VIRTUAL @@ -2357,17 +2354,11 @@ int configure_mac(int file_des) { #else sscanf(args[4], "%llx", &srcMac); #endif - FILE_LOG(logDEBUG1, ("Src Mac Addr: (0x) ")); { - int iloop = 5; - for (iloop = 5; iloop >= 0; --iloop) { - printf("%x", (unsigned int)(((srcMac >> (8 * iloop)) & 0xFF))); - if (iloop > 0) { - printf(":"); - } - } + char macstring[50]; + getMacAddressinString(macstring, 50, srcMac); + FILE_LOG(logDEBUG1, ("Src Mac Addr: %s\n", macstring)); } - FILE_LOG(logDEBUG1, (" = %llx\n", srcMac)); #if defined(JUNGFRAUD) || defined(EIGERD) // source port 2 @@ -2379,9 +2370,11 @@ int configure_mac(int file_des) { // dest ip2 uint32_t dstIp2 = 0; sscanf(args[6], "%x", &dstIp2); - FILE_LOG(logDEBUG1, ("Dst Ip Addr: %d.%d.%d.%d = 0x%x \n", - (dstIp2 >> 24) & 0xff, (dstIp2 >> 16) & 0xff, (dstIp2 >> 8) & 0xff, (dstIp2) & 0xff, - dstIp2)); + { + char ipstring[INET_ADDRSTRLEN]; + getIpAddressinString(ipstring, dstIp2); + FILE_LOG(logDEBUG1, ("Dst Ip Addr2: %s\n", ipstring)); + } // dest mac2 uint64_t dstMac2 = 0; #ifdef VIRTUAL @@ -2389,23 +2382,19 @@ int configure_mac(int file_des) { #else sscanf(args[7], "%llx", &dstMac2); #endif - FILE_LOG(logDEBUG1, ("Dst Mac Addr: (0x) ")); { - int iloop = 5; - for (iloop = 5; iloop >= 0; --iloop) { - printf ("%x", (unsigned int)(((dstMac2 >> (8 * iloop)) & 0xFF))); - if (iloop > 0) { - printf(":"); - } - } + char macstring[50]; + getMacAddressinString(macstring, 50, dstMac2); + FILE_LOG(logDEBUG1, ("Dst Mac Addr2: %s\n", macstring)); } - FILE_LOG(logDEBUG1, (" = %llx\n", dstMac2)); // source ip2 uint32_t srcIp2 = 0; sscanf(args[8], "%x", &srcIp2); - FILE_LOG(logDEBUG1, ("Src Ip Addr: %d.%d.%d.%d = 0x%x \n", - (srcIp2 >> 24) & 0xff, (srcIp2 >> 16) & 0xff, (srcIp2 >> 8) & 0xff, (srcIp2) & 0xff, - srcIp2)); + { + char ipstring[INET_ADDRSTRLEN]; + getIpAddressinString(ipstring, srcIp2); + FILE_LOG(logDEBUG1, ("Src Ip Addr2: %s\n", ipstring)); + } // source mac2 uint64_t srcMac2 = 0; #ifdef VIRTUAL @@ -2413,17 +2402,11 @@ int configure_mac(int file_des) { #else sscanf(args[9], "%llx", &srcMac2); #endif - FILE_LOG(logDEBUG1, ("Src Mac Addr: (0x) ")); { - int iloop = 5; - for (iloop = 5; iloop >= 0; --iloop) { - printf("%x", (unsigned int)(((srcMac2 >> (8 * iloop)) & 0xFF))); - if (iloop > 0) { - printf(":"); - } - } + char macstring[50]; + getMacAddressinString(macstring, 50, srcMac2); + FILE_LOG(logDEBUG1, ("Src Mac Addr2: %s\n", macstring)); } - FILE_LOG(logDEBUG1, (" = %llx\n", srcMac2)); // number of interfaces int numInterfaces = 0; diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index b31d1f42a..4a39bc3a9 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -6,5 +6,5 @@ #define APILIB 0x190405 #define APIRECEIVER 0x190405 #define APIGUI 0x190405 -#define APIEIGER 0x190514 #define APICTB 0x190514 +#define APIEIGER 0x190516