static void start_dnrd() { unsigned char Ip[32], cmdBuffer[100], tmpBuff[200]; unsigned char domanin_name[MAX_NAME_LEN]; int wlan_mode=0; apmib_get( MIB_WLAN_MODE, (void *)&wlan_mode); system("killall -9 dnrd 2> /dev/null"); apmib_get( MIB_IP_ADDR, (void *)tmpBuff); sprintf(Ip, "%s", inet_ntoa(*((struct in_addr *)tmpBuff))); apmib_get( MIB_DOMAIN_NAME, (void *)domanin_name); system("rm -f /var/hosts 2> /dev/null"); memset(cmdBuffer, 0x00, sizeof(cmdBuffer)); if(strlen(domanin_name) == 0) { /* if(getFilter_Type() == 0) //1:client { sprintf(cmdBuffer,"%s\\%s\n", Ip, "AlwaysHost"); } else */ { if(wlan_mode==0){//ap mode sprintf(cmdBuffer,"%s\\%s\n", Ip, "RealTekAP.com|RealTekAP.net"); }else if(wlan_mode==1){//client mode sprintf(cmdBuffer,"%s\\%s\n", Ip, "RealTekCL.com|RealTekCL.net"); } } write_line_to_file("/etc/hosts", 1, cmdBuffer); } else { /* if(getFilter_Type() == 0) //1:client { sprintf(cmdBuffer,"%s\\%s\n", Ip, "AlwaysHost"); } else */ { if(wlan_mode==0){//ap mode sprintf(cmdBuffer,"%s\\%s%s%s%s\n", Ip, domanin_name, "AP.com|",domanin_name, "AP.net"); }else if(wlan_mode==1){ sprintf(cmdBuffer,"%s\\%s%s%s%s\n", Ip, domanin_name, "CL.com|",domanin_name, "CL.net"); } } write_line_to_file("/etc/hosts", 1, cmdBuffer); } system("dnrd --cache=off -s 168.95.1.1"); }
/*method to start reload is co-operate to parse rule of reload.c*/ void start_wlan_by_schedule(int index) { int intValue=0, intValue1=0, i=0, entryNum=0, bak_idx=0, bak_vidx=0; char tmp1[64]={0}; SCHEDULE_T wlan_sched; int newfile=1; bak_idx=wlan_idx; wlan_idx=index; bak_idx=vwlan_idx; vwlan_idx=0; apmib_get(MIB_WLAN_WLAN_DISABLED, (void *)&intValue); #define WLAN_SCHEDULE_FILE "/var/wlsch.conf" sprintf(tmp1,WLAN_SCHEDULE_FILE"%d",index); unlink(tmp1); if(intValue==0){ apmib_get(MIB_WLAN_SCHEDULE_ENABLED, (void *)&intValue1); apmib_get(MIB_WLAN_SCHEDULE_TBL_NUM, (void *)&entryNum); if(intValue1==1 && entryNum > 0){ for (i=1; i<=entryNum; i++) { *((char *)&wlan_sched) = (char)i; apmib_get(MIB_WLAN_SCHEDULE_TBL, (void *)&wlan_sched); char line_buffer[100]={0}; if(wlan_sched.eco == 1 && !(wlan_sched.fTime == 0 && wlan_sched.tTime == 0)) { sprintf(line_buffer,"%d,%d,%d,%d\n",i,wlan_sched.day,wlan_sched.fTime, wlan_sched.tTime); sprintf(tmp1,WLAN_SCHEDULE_FILE"%d",index); write_line_to_file(tmp1, (newfile==1?1:2), line_buffer); newfile = 2; } } if(index == (NUM_WLAN_INTERFACE-1)){ sprintf(tmp1, "reload -k %s &", WLAN_SCHEDULE_FILE); system(tmp1); } } else{ /* do not care schedule*/ if(index == (NUM_WLAN_INTERFACE-1)){ sprintf(tmp1, "reload -k %s &", WLAN_SCHEDULE_FILE); system(tmp1); } } } else{ /*wlan is disabled, we do not care wlan schedule*/ if(index ==(NUM_WLAN_INTERFACE-1)){ sprintf(tmp1, "reload -k %s &", WLAN_SCHEDULE_FILE); system(tmp1); } } vwlan_idx=bak_vidx; wlan_idx=bak_idx; }
/******************************************************* * csv_tree_export * * write a list of accounts settings to a text file *******************************************************/ void csv_tree_export (CsvExportInfo *info) { FILE *fh; Account *root; Account *acc; GList *accts, *ptr; ENTER(""); DEBUG("File name is : %s", info->file_name); /* Get list of Accounts */ root = gnc_book_get_root_account (gnc_get_current_book()); accts = gnc_account_get_descendants_sorted (root); info->failed = FALSE; /* Open File for writing */ fh = g_fopen (info->file_name, "w"); if (fh != NULL) { gchar *header; gchar *part1; gchar *part2; const gchar *currentSel; gchar *end_sep; gchar *mid_sep; int i; /* Set up separators */ if (info->use_quotes) { end_sep = "\""; mid_sep = g_strconcat ("\"", info->separator_str, "\"", NULL); } else { end_sep = ""; mid_sep = g_strconcat (info->separator_str, NULL); } /* Header string, 'eol = end of line marker' */ header = g_strconcat (end_sep, _("type"), mid_sep, _("full_name"), mid_sep, _("name"), mid_sep, _("code"), mid_sep, _("description"), mid_sep, _("color"), mid_sep, _("notes"), mid_sep, _("commoditym"), mid_sep, _("commodityn"), mid_sep, _("hidden"), mid_sep, _("tax"), mid_sep, _("place_holder"), end_sep, EOLSTR, NULL); DEBUG("Header String: %s", header); /* Write header line */ if (!write_line_to_file (fh, header)) { info->failed = TRUE; g_free (mid_sep); g_free (header); return; } g_free (header); /* Go through list of accounts */ for (ptr = accts, i = 0; ptr; ptr = g_list_next (ptr), i++) { gchar *fullname = NULL; gchar *str_temp = NULL; acc = ptr->data; DEBUG("Account being processed is : %s", xaccAccountGetName (acc)); /* Type */ currentSel = xaccAccountTypeEnumAsString (xaccAccountGetType (acc)); part1 = g_strconcat (end_sep, currentSel, mid_sep, NULL); /* Full Name */ fullname = gnc_account_get_full_name (acc); str_temp = csv_test_field_string (info, fullname); part2 = g_strconcat (part1, str_temp, mid_sep, NULL); g_free (str_temp); g_free (fullname); g_free (part1); /* Name */ currentSel = xaccAccountGetName (acc); str_temp = csv_test_field_string (info, currentSel); part1 = g_strconcat (part2, str_temp, mid_sep, NULL); g_free (str_temp); g_free (part2); /* Code */ currentSel = xaccAccountGetCode (acc) ? xaccAccountGetCode (acc) : ""; str_temp = csv_test_field_string (info, currentSel); part2 = g_strconcat (part1, str_temp, mid_sep, NULL); g_free (str_temp); g_free (part1); /* Description */ currentSel = xaccAccountGetDescription (acc) ? xaccAccountGetDescription (acc) : ""; str_temp = csv_test_field_string (info, currentSel); part1 = g_strconcat (part2, str_temp, mid_sep, NULL); g_free (str_temp); g_free (part2); /* Color */ currentSel = xaccAccountGetColor (acc) ? xaccAccountGetColor (acc) : "" ; str_temp = csv_test_field_string (info, currentSel); part2 = g_strconcat (part1, str_temp, mid_sep, NULL); g_free (str_temp); g_free (part1); /* Notes */ currentSel = xaccAccountGetNotes (acc) ? xaccAccountGetNotes (acc) : "" ; str_temp = csv_test_field_string (info, currentSel); part1 = g_strconcat (part2, str_temp, mid_sep, NULL); g_free (str_temp); g_free (part2); /* Commodity Mnemonic */ currentSel = gnc_commodity_get_mnemonic (xaccAccountGetCommodity (acc)); str_temp = csv_test_field_string (info, currentSel); part2 = g_strconcat (part1, str_temp, mid_sep, NULL); g_free (str_temp); g_free (part1); /* Commodity Namespace */ currentSel = gnc_commodity_get_namespace (xaccAccountGetCommodity (acc)); str_temp = csv_test_field_string (info, currentSel); part1 = g_strconcat (part2, str_temp, mid_sep, NULL); g_free (str_temp); g_free (part2); /* Hidden */ currentSel = xaccAccountGetHidden (acc) ? "T" : "F" ; part2 = g_strconcat (part1, currentSel, mid_sep, NULL); g_free (part1); /* Tax */ currentSel = xaccAccountGetTaxRelated (acc) ? "T" : "F" ; part1 = g_strconcat (part2, currentSel, mid_sep, NULL); g_free (part2); /* Place Holder / end of line marker */ currentSel = xaccAccountGetPlaceholder (acc) ? "T" : "F" ; part2 = g_strconcat (part1, currentSel, end_sep, EOLSTR, NULL); g_free (part1); DEBUG("Account String: %s", part2); /* Write to file */ if (!write_line_to_file (fh, part2)) { info->failed = TRUE; break; } g_free (part2); } g_free (mid_sep); } else info->failed = TRUE; if (fh) fclose (fh); g_list_free (accts); LEAVE(""); }
/******************************************************* * csv_transactions_export * * write a list of transactions to a text file *******************************************************/ void csv_transactions_export (CsvExportInfo *info) { FILE *fh; Account *acc; GList *ptr; gboolean num_action = qof_book_use_split_action_for_num_field (gnc_get_current_book()); ENTER(""); DEBUG("File name is : %s", info->file_name); info->failed = FALSE; /* Set up separators */ if (info->use_quotes) { info->end_sep = "\""; info->mid_sep = g_strconcat ("\"", info->separator_str, "\"", NULL); } else { info->end_sep = ""; info->mid_sep = g_strconcat (info->separator_str, NULL); } /* Open File for writing */ fh = g_fopen (info->file_name, "w" ); if (fh != NULL) { gchar *header; int i; /* Header string */ if (info->simple_layout) { header = g_strconcat (info->end_sep, _("Date"), info->mid_sep, _("Account Name"), info->mid_sep, (num_action ? _("Transaction Number") : _("Number")), info->mid_sep, _("Description"), info->mid_sep, _("Full Category Path"), info->mid_sep, _("Reconcile"), info->mid_sep, _("Amount With Sym"), info->mid_sep, _("Amount Num."), info->mid_sep, _("Rate/Price"), info->end_sep, EOLSTR, NULL); } else { header = g_strconcat (info->end_sep, _("Date"), info->mid_sep, _("Transaction Type"), info->mid_sep, _("Second Date"), info->mid_sep, _("Account Name"), info->mid_sep, (num_action ? _("Transaction Number") : _("Number")), info->mid_sep, _("Description"), info->mid_sep, _("Notes"), info->mid_sep, _("Memo"), info->mid_sep, _("Full Category Path"), info->mid_sep, _("Category"), info->mid_sep, _("Row Type"), info->mid_sep, (num_action ? _("Number/Action") : _("Action")), info->mid_sep, _("Reconcile"), info->mid_sep, _("Amount With Sym"), info->mid_sep, _("Commodity Mnemonic"), info->mid_sep, _("Commodity Namespace"), info->mid_sep, _("Amount Num."), info->mid_sep, _("Rate/Price"), info->end_sep, EOLSTR, NULL); } DEBUG("Header String: %s", header); /* Write header line */ if (!write_line_to_file (fh, header)) { info->failed = TRUE; g_free (header); return; } g_free (header); /* Go through list of accounts */ for (ptr = info->csva.account_list, i = 0; ptr; ptr = g_list_next(ptr), i++) { acc = ptr->data; DEBUG("Account being processed is : %s", xaccAccountGetName (acc)); account_splits (info, acc, fh); } g_list_free (info->trans_list); // free trans_list } else info->failed = TRUE; if (fh) fclose (fh); LEAVE(""); }
/******************************************************* * account_splits * * gather the splits / transactions for an account and * send them to a file *******************************************************/ static void account_splits (CsvExportInfo *info, Account *acc, FILE *fh ) { Query *q; GSList *p1, *p2; GList *splits; QofBook *book; q = qof_query_create_for (GNC_ID_SPLIT); book = gnc_get_current_book(); qof_query_set_book (q, book); /* Sort by transaction date */ p1 = g_slist_prepend (NULL, TRANS_DATE_POSTED); p1 = g_slist_prepend (p1, SPLIT_TRANS); p2 = g_slist_prepend (NULL, QUERY_DEFAULT_SORT); qof_query_set_sort_order (q, p1, p2, NULL); xaccQueryAddSingleAccountMatch (q, acc, QOF_QUERY_AND); xaccQueryAddDateMatchTT (q, TRUE, info->csvd.start_time, TRUE, info->csvd.end_time, QOF_QUERY_AND); /* Run the query */ for (splits = qof_query_run (q); splits; splits = splits->next) { Split *split; Transaction *trans; SplitList *s_list; GList *node; Split *t_split; int nSplits; int cnt; gchar *line; split = splits->data; trans = xaccSplitGetParent (split); nSplits = xaccTransCountSplits (trans); s_list = xaccTransGetSplitList (trans); // Look for trans already exported in trans_list if (g_list_find (info->trans_list, trans) != NULL) continue; // Simple Layout if (info->simple_layout) { line = make_simple_trans_line (acc, trans, split, info); /* Write to file */ if (!write_line_to_file (fh, line)) { info->failed = TRUE; break; } g_free (line); continue; } // Complex Transaction Line. line = make_complex_trans_line (acc, trans, split, info); /* Write to file */ if (!write_line_to_file (fh, line)) { info->failed = TRUE; break; } g_free (line); /* Loop through the list of splits for the Transaction */ node = s_list; cnt = 0; while ((cnt < nSplits) && (info->failed == FALSE)) { t_split = node->data; // Complex Split Line. line = make_complex_split_line (trans, t_split, info); if (!write_line_to_file (fh, line)) info->failed = TRUE; g_free (line); cnt++; node = node->next; } info->trans_list = g_list_prepend (info->trans_list, trans); // add trans to trans_list } qof_query_destroy (q); g_list_free (splits); }
/******************************************************* * account_splits * * gather the splits / transactions for an account and * send them to a file *******************************************************/ static void account_splits (CsvExportInfo *info, Account *acc, FILE *fh ) { Query *q; GSList *p1, *p2; GList *splits; QofBook *book; gchar *end_sep; gchar *mid_sep; q = qof_query_create_for(GNC_ID_SPLIT); book = gnc_get_current_book(); qof_query_set_book (q, book); /* Set up separators */ if (info->use_quotes) { end_sep = "\""; mid_sep = g_strconcat ( "\"", info->separator_str, "\"", NULL); } else { end_sep = ""; mid_sep = g_strconcat ( info->separator_str, NULL); } /* Sort by transaction date */ p1 = g_slist_prepend (NULL, TRANS_DATE_POSTED); p1 = g_slist_prepend (p1, SPLIT_TRANS); p2 = g_slist_prepend (NULL, QUERY_DEFAULT_SORT); qof_query_set_sort_order (q, p1, p2, NULL); xaccQueryAddSingleAccountMatch (q, acc, QOF_QUERY_AND); xaccQueryAddDateMatchTT (q, TRUE, info->csvd.start_time, TRUE, info->csvd.end_time, QOF_QUERY_AND); /* Run the query */ for (splits = qof_query_run(q); splits; splits = splits->next) { Split *split; Transaction *trans; SplitList *s_list; GList *node; Split *t_split; int nSplits; int cnt; gchar *part1; gchar *part2; gchar *date; const gchar *currentSel; const gchar *split_amount; split = splits->data; trans = xaccSplitGetParent(split); nSplits = xaccTransCountSplits(trans); s_list = xaccTransGetSplitList(trans); /* Date */ date = qof_print_date ( xaccTransGetDate(trans)); part1 = g_strconcat ( end_sep, date, mid_sep, NULL); g_free(date); /* Name */ currentSel = xaccAccountGetName(acc); part2 = g_strconcat ( part1, currentSel, mid_sep, NULL); g_free(part1); /* Number */ currentSel = gnc_get_num_action(trans, NULL); part1 = g_strconcat ( part2, currentSel, mid_sep, NULL); g_free(part2); /* Description */ currentSel = xaccTransGetDescription(trans); part2 = g_strconcat ( part1, currentSel, mid_sep, NULL); g_free(part1); /* Notes */ currentSel = xaccTransGetNotes(trans); if (currentSel == NULL) part1 = g_strconcat ( part2, mid_sep, NULL); else part1 = g_strconcat ( part2, currentSel, mid_sep, NULL); g_free(part2); /* Memo */ currentSel = xaccSplitGetMemo(split); part2 = g_strconcat ( part1, currentSel, mid_sep, NULL); g_free(part1); /* Category */ currentSel = xaccSplitGetCorrAccountName(split); part1 = g_strconcat ( part2, currentSel, mid_sep, "T", mid_sep, NULL); g_free(part2); /* Action */ currentSel = gnc_get_num_action(NULL, split); part2 = g_strconcat ( part1, currentSel, mid_sep, NULL); g_free(part1); /* Reconcile */ switch (xaccSplitGetReconcile (split)) { case NREC: currentSel = "N"; break; case CREC: currentSel = "C"; break; case YREC: currentSel = "Y"; break; case FREC: currentSel = "F"; break; case VREC: currentSel = "V"; break; default: currentSel = "N"; } part1 = g_strconcat ( part2, currentSel, mid_sep, NULL); g_free(part2); /* To with Symbol */ split_amount = xaccPrintAmount(xaccSplitGetAmount(split), gnc_split_amount_print_info(split, TRUE)); part2 = g_strconcat ( part1, split_amount, mid_sep, NULL); g_free(part1); /* From with Symbol */ part1 = g_strconcat ( part2, "", mid_sep, NULL); g_free(part2); /* To Number Only */ split_amount = xaccPrintAmount(xaccSplitGetAmount(split), gnc_split_amount_print_info(split, FALSE)); part2 = g_strconcat ( part1, split_amount, mid_sep, NULL); g_free(part1); /* From Number Only */ part1 = g_strconcat ( part2, "", mid_sep, "", mid_sep, "", end_sep, "\n", NULL); g_free(part2); /* Write to file */ if (!write_line_to_file(fh, part1)) { info->failed = TRUE; break; } g_free(part1); /* Loop through the list of splits for the Transcation */ node = s_list; cnt = 0; while ( (cnt < nSplits) && (info->failed == FALSE)) { t_split = node->data; /* Start of line */ part1 = g_strconcat ( end_sep, mid_sep, mid_sep, mid_sep, mid_sep, mid_sep, NULL); /* Memo */ currentSel = xaccSplitGetMemo(t_split); part2 = g_strconcat ( part1, currentSel, mid_sep, NULL); g_free(part1); /* Account */ currentSel = xaccAccountGetName( xaccSplitGetAccount(t_split)); part1 = g_strconcat ( part2, currentSel, mid_sep, "S", mid_sep, NULL); g_free(part2); /* Action */ currentSel = gnc_get_num_action(NULL, t_split); part2 = g_strconcat ( part1, currentSel, mid_sep, NULL); g_free(part1); /* Reconcile */ switch (xaccSplitGetReconcile (split)) { case NREC: currentSel = "N"; break; case CREC: currentSel = "C"; break; case YREC: currentSel = "Y"; break; case FREC: currentSel = "F"; break; case VREC: currentSel = "V"; break; default: currentSel = "N"; } part1 = g_strconcat ( part2, currentSel, mid_sep, NULL); g_free(part2); /* From / To with Symbol */ split_amount = xaccPrintAmount(xaccSplitGetAmount(t_split), gnc_split_amount_print_info(t_split, TRUE)); if (xaccSplitGetAccount(t_split) == acc) part2 = g_strconcat ( part1, split_amount, mid_sep, mid_sep, NULL); else part2 = g_strconcat ( part1, mid_sep, split_amount, mid_sep, NULL); g_free(part1); /* From / To Numbers only */ split_amount = xaccPrintAmount(xaccSplitGetAmount(t_split), gnc_split_amount_print_info(t_split, FALSE)); if (xaccSplitGetAccount(t_split) == acc) part1 = g_strconcat ( part2, split_amount, mid_sep, mid_sep, NULL); else part1 = g_strconcat ( part2, mid_sep, split_amount, mid_sep, NULL); g_free(part2); /* From / To - Share Price / Conversion factor */ split_amount = xaccPrintAmount(xaccSplitGetSharePrice(t_split), gnc_split_amount_print_info(t_split, FALSE)); if (xaccSplitGetAccount(t_split) == acc) part2 = g_strconcat ( part1, split_amount, mid_sep, end_sep, "\n", NULL); else part2 = g_strconcat ( part1, mid_sep, split_amount, end_sep, "\n", NULL); g_free(part1); if (!write_line_to_file(fh, part2)) info->failed = TRUE; g_free(part2); cnt++; node = node->next; } } g_free(mid_sep); qof_query_destroy (q); g_list_free( splits ); }
// extern for P2P_SUPPORT void set_lan_dhcpd(char *interface, int mode) { char tmpBuff1[32]={0}, tmpBuff2[32]={0}; int intValue=0, dns_mode=0; char line_buffer[100]={0}; char tmp1[64]={0}; char tmp2[64]={0}; int opMode=-1; int dhcpMode=-1; struct in_addr lanIpAddr; char *strtmp=NULL, *strtmp1=NULL; //DHCPRSVDIP_T entry; //int i, entry_Num=0; #ifdef HOME_GATEWAY char tmpBuff3[32]={0}; #endif sprintf(line_buffer,"interface %s\n",interface); write_line_to_file(DHCPD_CONF_FILE, 1, line_buffer); apmib_get(MIB_DHCP_CLIENT_START, (void *)tmp1); strtmp= inet_ntoa(*((struct in_addr *)tmp1)); sprintf(line_buffer,"start %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); apmib_get(MIB_DHCP_CLIENT_END, (void *)tmp1); strtmp= inet_ntoa(*((struct in_addr *)tmp1)); sprintf(line_buffer,"end %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); apmib_get(MIB_SUBNET_MASK, (void *)tmp1); strtmp= inet_ntoa(*((struct in_addr *)tmp1)); sprintf(line_buffer,"opt subnet %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); apmib_get( MIB_OP_MODE,&opMode); apmib_get( MIB_DHCP,&dhcpMode); if((opMode==1) && (dhcpMode==15)) { if(check_upStream_connected()) { getInAddr("br0", IP_ADDR, (void *)&tmp2); } else { apmib_get( MIB_IP_ADDR, (void *)tmp2); if (memcmp(tmp2, "\x0\x0\x0\x0", 4)){ strtmp= inet_ntoa(*((struct in_addr *)tmp2)); sprintf(line_buffer,"opt router %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); } } if (memcmp(tmp2, "\x0\x0\x0\x0", 4)){ strtmp= inet_ntoa(*((struct in_addr *)tmp2)); sprintf(line_buffer,"opt dns %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); } } else { if(mode==1){//ap apmib_get( MIB_DEFAULT_GATEWAY, (void *)tmp2); if (memcmp(tmp2, "\x0\x0\x0\x0", 4)){ strtmp= inet_ntoa(*((struct in_addr *)tmp2)); sprintf(line_buffer,"opt router %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); } }else{ apmib_get(MIB_IP_ADDR, (void *)tmp1); strtmp= inet_ntoa(*((struct in_addr *)tmp1)); sprintf(line_buffer,"opt router %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); #ifdef HOME_GATEWAY apmib_get( MIB_DNS_MODE, (void *)&dns_mode); if(dns_mode==0){ sprintf(line_buffer,"opt dns %s\n",strtmp); /*now strtmp is ip address value */ write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); } #endif } if((mode==1) #if 1 ||(mode==2 && dns_mode==1) #endif ){ if(intValue==0){ /*no dns option for dhcp server, use default gatewayfor dns opt*/ if(mode==1){ apmib_get( MIB_DEFAULT_GATEWAY, (void *)tmp2); if (memcmp(tmp2, "\x0\x0\x0\x0", 4)){ strtmp= inet_ntoa(*((struct in_addr *)tmp2)); sprintf(line_buffer,"opt dns %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); } }else { apmib_get( MIB_IP_ADDR, (void *)tmp2); if (memcmp(tmp2, "\x0\x0\x0\x0", 4)){ strtmp= inet_ntoa(*((struct in_addr *)tmp2)); sprintf(line_buffer,"opt dns %s\n",strtmp); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); } } } } } memset(tmp1, 0x00, 64); apmib_get( MIB_DOMAIN_NAME, (void *)&tmp1); if(tmp1[0]){ sprintf(line_buffer,"opt domain %s\n",tmp1); write_line_to_file(DHCPD_CONF_FILE, 2, line_buffer); } /* may not need to set ip again*/ apmib_get(MIB_IP_ADDR, (void *)tmp1); strtmp= inet_ntoa(*((struct in_addr *)tmp1)); sprintf(tmpBuff1, "%s", strtmp); apmib_get(MIB_SUBNET_MASK, (void *)tmp2); strtmp1= inet_ntoa(*((struct in_addr *)tmp2)); sprintf(tmpBuff2, "%s", strtmp1); sprintf(line_buffer, "ifconfig %s %s netmask %s", interface, tmpBuff1, tmpBuff2); system(line_buffer); sprintf(line_buffer, "udhcpd %s", DHCPD_CONF_FILE); system(line_buffer); //start_dnrd(); }