utils.c revision f9d51c26
1 2#include <stdio.h> 3#include <stdlib.h> 4#include <string.h> 5#include <unistd.h> 6 7 8char *str_trim(char *s) { 9 char *start, *last, *bk; 10 int len; 11 12 start = s; 13 while (isspace(*start)) 14 start++; 15 16 bk = last = s + strlen(s) - 1; 17 while (last > start && isspace(*last)) 18 last--; 19 20 if ((s != start) || (bk != last)) { 21 len = last - start + 1; 22 strncpy(s, start, len); 23 s[len] = '\0'; 24 } 25 return s; 26} 27 28int exec_with_result_line(char *cmd, char *result, int len) 29{ 30 FILE *fp = NULL; 31 if (!cmd || !result || !len) 32 return -1; 33 fp = popen(cmd, "r"); 34 if (!fp) 35 return -1; 36 fgets(result, len, fp); 37 str_trim(result); 38 pclose(fp); 39 return 0; 40} 41 42 43#include <stdio.h> 44#include <string.h> 45#include <stdlib.h> 46#include <arpa/inet.h> 47 48int check_same_network(char *ip1, char *netmask, char *ip2) { 49 struct in_addr addr1, addr2, mask; 50 51 if (inet_pton(AF_INET, ip1, &addr1) != 1) { 52 printf("Invalid IP address: %s\n", ip1); 53 return -1; 54 } 55 if (inet_pton(AF_INET, netmask, &mask) != 1) { 56 printf("Invalid netmask: %s\n", netmask); 57 return -1; 58 } 59 if (inet_pton(AF_INET, ip2, &addr2) != 1) { 60 printf("Invalid IP address: %s\n", ip2); 61 return -1; 62 } 63 64 if ((addr1.s_addr & mask.s_addr) == (addr2.s_addr & mask.s_addr)) { 65 return 1; 66 } else { 67 return 0; 68 } 69} 70