CanSocket::CanSocket(const char* interface_str) noexcept : Socket(SocketType::CAN), m_can_init(FALSE) { AR::boolean sock_created = is_socket_initialized(); if ( interface_str != NULL_PTR && sock_created == TRUE ) { AR::boolean interface_exists = check_interface(interface_str); // socket creation successful and interface exists if ( interface_exists == TRUE ) { AR::boolean bind_success = bind_if_socket(); if ( bind_success == TRUE ) { m_can_init = TRUE; } else { m_can_init = FALSE; } } else { m_can_init = FALSE; } } else { m_can_init = FALSE; } }
Bool SignerReal::notarize( PublicKey pubkey, Signature signature, Digest hash, Monitor& monitor ) { if (!check_interface(monitor)) return false; eprovider::TheKey thepubkey = creator.getCreatureCurrentTheKey(pubkey); Size hashsize; RECOVER_CALL(hashsize = iface->getMaxHashSize(thepubkey, error)); Padder curpad = padder; if (pubkey.getPadder(Monitor())) { curpad = pubkey.getPadder(monitor); } else if (signature.getPadder(Monitor())) { curpad = signature.getPadder(monitor); } else { //TODO: find default padder } if (curpad.ok() && hashsize.bits()) hash = curpad.pad(hash, hashsize, monitor); if (!monitor) return Bool(); Data hashblock = hash.asData(); Image signimage = signature.encode(monitor); Snapshot signblock = signimage.snapshot(); Bool result; RECOVER_CALL( (result = iface->notarizeHash(session,hashblock.get(), hashblock.size(), signblock.get(), signblock.size(), signblock.encid(), thepubkey, error)) ); return result; }
Signature SignerReal::sign( PrivateKey privkey, Digest hash, Monitor& monitor ) { if (!check_interface(monitor)) return Signature(); Parameters params = privkey.getAlgParams(acSign, Monitor()); if (params) setAlgParams(params,monitor); Padder curpad = padder; if (privkey.getPadder(Monitor())) { curpad = privkey.getPadder(monitor); } else { //TODO: find default padder } Error error; if (random) { IRef<eprovider::ProviderInterface> randomer = creator.getCreatureCurrentInterface(random); if (randomer) iface->setRandom(session, randomer.cast<eprovider::RandomGenerator>().get(), error); } eprovider::TheKey thekey = creator.getCreatureCurrentTheKey(privkey); Size hashsize = iface->getMaxHashSize(thekey, error); if (curpad.ok() && hashsize.bits()) hash = curpad.pad(hash, hashsize, monitor); if (!monitor) return Signature(); Data hashblock = hash.asData(); eprovider::Block binsign; RECOVER_CALL( (binsign = iface->signHash(session, hashblock.get(), hashblock.size(), thekey, error)) ); Snapshot snapshot = creator.createSnapshot(binsign.get(), binsign.size(), binsign.encid(), iface->getKeyId(kcSignature)); return snapshot.reviveSignature(monitor); }
static jint check(JNIEnv *env, jobject thiz, jstring jName) { const char *name = jName ? env->GetStringUTFChars(jName, NULL) : NULL; if (!name) { jniThrowNullPointerException(env, "name"); return 0; } int flags = check_interface(name); env->ReleaseStringUTFChars(jName, name); return flags; }
int main(int count, char **options) { int res; if (strcmp(options[1], "-d") != 0) { res = daemon(0, 0); printf("return value: %s\n", res); } res_init(); _res.retrans = 4; _res.retry = 2; int running = 1; if (parse_config()) { printf("error reading configuration!\n"); return 1; } if (open_status_socket()) printf("error opening status socket; no status will be provided\n"); stat(config_file, &config_last_mod); printf("last config modified time: %s\n", ctime(&config_last_mod.st_mtime)); while (running) { struct config_interfaces *cur = config; printf("checking if conf file has changed\n"); if (config_changed()) { printf("modifying:\n"); clear_config(config); cur = 0; if (parse_config()) printf("error reading configuration!\n"); else cur = config; } while (cur) { if (check_interface(cur)) { printf("media type: %s\n", mediatype(cur->if_name)); if (strcmp(mediatype(cur->if_name), "Ethernet") == 0) { if (setup_ethernetinterface(cur)) break; } else if (strcmp(mediatype(cur->if_name), "IEEE802.11") == 0) { if (setup_wlaninterface(cur)) break; } } cur = cur->next; } printf("Sleeping... waiting %d seconds\n", poll_wait); sleep(poll_wait); printf("restarto\n"); } return 0; }
static int check_sysfs(char *sysfspath) { char dirbuf[FILENAME_MAX]; int len = strlen(sysfspath); DIR *dir; struct dirent *dent; regex_t r; int ret; int look_closer = 0; dir = opendir(sysfspath); if (!dir) return -1; strcpy(dirbuf, sysfspath); dirbuf[len++] = '/'; /* Check for dirs that identify interfaces */ ret = regcomp(&r, "^[0-9]+-[0-9]+(\\.[0-9])*\\:[0-9]+\\.[0-9]+$", REG_EXTENDED | REG_NOSUB); if (ret) { closedir(dir); return -1; } while ((dent = readdir(dir))) { struct stat st; int ret; /* No need to check those beginning with a period */ if (dent->d_name[0] == '.') continue; strncpy(dirbuf + len, dent->d_name, FILENAME_MAX - len); dirbuf[FILENAME_MAX - 1] = '\0'; /* Sentinel */ ret = lstat(dirbuf, &st); if (ret) continue; /* Look closer at dirs that may be interfaces */ if (S_ISDIR(st.st_mode)) { if (!regexec(&r, dent->d_name, 0, 0, 0)) if (check_interface(dirbuf) > 0) /* potential MTP interface! */ look_closer = 1; } } regfree(&r); closedir(dir); return look_closer; }
static char* get_interface(struct mode_list_elem *data) { char *interface = NULL; int check = 0; /* check main configuration before using the information from the specific mode */ interface = (char *)get_network_interface(); /* no interface override specified, let's use the one from the mode config */ if(data && !interface) { if(data->network_interface) { interface = strdup(data->network_interface); } } if(interface != NULL) check = check_interface(interface); if(interface == NULL || check != 0) { if(interface != NULL) free((char *)interface); /* no known interface configured and existing, falling back to usb0 */ interface = malloc(sizeof(default_interface)*sizeof(char)); strncpy(interface, default_interface, sizeof(default_interface)); } check = check_interface(interface); if(check) log_warning("Configured interface is incorrect, nor does usb0 exists. Check your config!\n"); /* TODO: Make it so that interface configuration gets skipped when no usable interface exists */ log_debug("interface = %s\n", interface); return interface; }
Bool SignerReal::notarize( PublicKey pubkey, Signature signature, const void* data, Size size, Monitor& monitor ) { if (!check_interface(monitor)) return false; eprovider::TheKey thepubkey = creator.getCreatureCurrentTheKey(pubkey); Image signimage = signature.encode(monitor); Snapshot signblock = signimage.snapshot(); Bool result; RECOVER_CALL( (iface->notarizeStart(session, signblock.get(), signblock.size(), signblock.encid(), thepubkey, error)) ); RECOVER_CALL( (iface->notarizeProcess(session, data, size, error)) ); RECOVER_CALL( (result = iface->notarizeStop(session, error)) ); return result; }
Signature SignerReal::sign( PrivateKey privkey, const void* data, Size size, Monitor& monitor ) { if (!check_interface(monitor)) return Signature(); if (!hasher) { // TODO: find default hasher for this sign algid } if (hasher) { Digest digest = hasher.hash(data,size,monitor); return sign(privkey,data,size,monitor); } else { eprovider::TheKey thekey = creator.getCreatureCurrentTheKey(privkey); eprovider::Block binsign; RECOVER_CALL( (iface->signStart(session, thekey, error)) ); RECOVER_CALL( (iface->signProcess(session, data, size, error)) ); RECOVER_CALL( (binsign = iface->signStop(session, error)) ); Snapshot snapshot = creator.createSnapshot(binsign.get(), binsign.size(), binsign.encid(), iface->getKeyId(kcSignature)); return snapshot.reviveSignature(monitor); } }
void LPC17XX_Ethernet::on_second_tick(void *) { check_interface(); }
int collect_thread(void) { //int ret, ret1, ret2, ret3, ret4, ret5, ret6, ret7; pthread_t thread_id, thread_id1, thread_id2, thread_id3, thread_id4, thread_id5, thread_id6, thread_id7, thread_id8; //pthread_mutex_init(&mutex, NULL); //pthread_cond_init(&cond, NULL); // struct pthread_para *para; // para = malloc(sizeof(struct pthread_para)); int len = 50; para_conf_s->interface_status1 = 0; para_conf_s->interface_status1 = 0; //strcpy( para_conf_s->interface0, para_conf_s->interface1); //strcpy( para_conf_s->interface1, para_conf_s->interface2); if(check_interface(para_conf_s->interface1) == 3) { para_conf_s->interface_status1 = 1; } if(check_interface(para_conf_s->interface2) == 3) { para_conf_s->interface_status2 = 1; } // printf("the para_conf_s->interface_status1: %d===\n", para_conf_s->interface_status1); // printf("the para_conf_s->interface_status0 is %d===\n", para_conf_s->interface_status0); // printf("the para_conf_s->interface_status1 is %d===\n", para_conf_s->interface_status1); //当send_json_base和send_json_net同时在各自线程中执行时。就会提示: //sh: -c: line 30: unexpected EOF while looking for matching `'' //sh: -c: line 31: syntax error: unexpected end of file //但各自分别单独作为一个线程执行时就没有这个问题。 // pthread_create(&thread_id, NULL, (void *)send_json_disk_raw, (void *)para ); // pthread_create(&thread_id, NULL, (void *)send_json_disk_all, (void *)para ); #ifndef MODE_DEBUG pthread_create(&thread_id, NULL, (void *)send_json_disk_iostat,(void *)para_conf_s ); pthread_create(&thread_id1, NULL, (void *)send_json_common, (void *)para_conf_s ); pthread_create(&thread_id2, NULL, (void *)send_json_base, (void *)para_conf_s ); pthread_create(&thread_id3, NULL, (void *)send_json_cpu, (void *)para_conf_s ); pthread_create(&thread_id4, NULL, (void *)send_json_interval_240,(void *)para_conf_s ); if(para_conf_s->interface_status1) { pthread_create(&thread_id5, NULL, (void *)send_json_net, (void *)(para_conf_s->interface1) ); } if(para_conf_s->interface_status2) { pthread_create(&thread_id6, NULL, (void *)send_json_net, (void *)(para_conf_s->interface2) ); } pthread_create(&thread_id7, NULL, (void *)send_json_proc, (void *)para_conf_s ); if(strcmp("2", shell("netstat -antp |grep LIST |grep mysql")) !=0) { pthread_create(&thread_id8, NULL, (void *)send_json_mysql, (void *)para_conf_s ); } //线程回收 pthread_join(thread_id , NULL); pthread_join(thread_id1, NULL); pthread_join(thread_id2, NULL); pthread_join(thread_id3, NULL); pthread_join(thread_id4, NULL); if(para_conf_s->interface_status1) { pthread_join(thread_id5, NULL); } if(para_conf_s->interface_status2) { pthread_join(thread_id6, NULL); } pthread_join(thread_id7, NULL); if(strcmp("2", shell("netstat -antp |grep LIST |grep mysql")) !=0) { pthread_join(thread_id8, NULL); } #endif //finished======================================= //root about Private and Private_IPCS //send_json_common((void *)para_conf_s); //user monitor group of disk // send_json_base((void *)para_conf_s); //user monitor // send_json_interval_240((void *)para_conf_s); //user monitor // send_json_net((void *)(para_conf_s->interface2) ); //user monitor // send_json_cpu((void *)para_conf_s); //user monitor group of disk // send_json_disk_iostat((void *)para_conf_s); // if(strcmp("2", shell("netstat -antp |grep LIST |grep mysql")) !=0) { send_json_mysql((void *)para_conf_s); } //user root of iptables // send_json_proc((void *)para_conf_s); //free(para); //防止debug模式时,出现死循环 sleep(1); return 0; }