⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mn_lib.c

📁 hammerOS(了解的人就知道了)的一个板块Manage的源代码
💻 C
字号:
/***********************************************************

                          mn_lib.c  
                             -------------------
    description           : common set of management   
    begin                : Wed April 25 2001
    copyright            : (C) 2001 by chenbin
    email                : chenbin@harbournetworks.com


*************************************************************/


#ifdef _cplusplus
extern"C"{
#endif

#include "mn_set.h"
#include <linx_str.h>
#include <boot_macaddr.h>
#include <sysinfo.h>
#include <linux/in.h>

#define _ERR_EN_MN_HOSTNAME_TOOLONG_        "Hostname too long.(should be 20 char at most)."
#define _ERR_CH_MN_HOSTNAME_TOOLONG_        "主机名长度,超过最大长度(20个字符)."
#define _ERR_EN_MN_HOSTNAME_TOOSHORT_       "Hostname too short.(should be 4 char at least)."
#define _ERR_CH_MN_HOSTNAME_TOOSHORT_       "主机名太短,小于最小长度(4个字符)."

#define _ERR_EN_MN_STR_TOOLONG_             "Too long string.(should be 100 char at most)."
#define _ERR_CH_MN_STR_TOOLONG_		    "字符串长度超过最大长度(100个字符)."	
#define _ERR_EN_MN_STR_ILLEGALCHAR_	    "String include illegal char.(should only include 'a'-'z' 'A'-'z' '0'-'9' or '_')."
#define _ERR_CH_MN_STR_ILLEGALCHAR_         "字符串包含非法字符(只允许大小写字母,数字和下划线)."
#define _ERR_EN_MN_STR_FIRSTCHAR_           "First char of string must be alpha."
#define _ERR_CH_MN_STR_FIRSTCHAR_           "字符串的第一个字符必须是字母."
 


#define _ERR_EN_MN_HOSTNAME_ILLEGALCHAR_     "Hostname include illegal char.(should only include 'a'-'z' 'A'-'z' '0'-'9' ' ' or '_')."
#define _ERR_CH_MN_HOSTNAME_ILLEGALCHAR_     "主机名包含非法字符(只允许大小写字母,数字,空格和下划线)."
#define _ERR_EN_MN_HOSTNAME_FIRSTCHAR_       "First char of hostname must be alpha."
#define _ERR_CH_MN_HOSTNAME_FIRSTCHAR_       "主机名的第一个字符必须是字母."


/* mn_hostname defined in mn_main.c */
extern char mn_hostname[_MN_MAX_HOSTNAME_LEN_];
extern char mn_syscontact[_MN_MAX_SYSCONTACT_LEN_];
extern char mn_syslocation[_MN_MAX_SYSLOCATION_LEN_];
extern char *mn_sys_descr;


int mn_check_hostname_legal(char *hoststr, char **errmsg,unsigned short lan_type)
{
  int i;
  int len;

  len = strlen(hoststr);
  if (len > 20)
  	{
  	  *errmsg = (lan_type == 2)?(_ERR_CH_MN_HOSTNAME_TOOLONG_):(_ERR_EN_MN_HOSTNAME_TOOLONG_);
      return 0;
  	}  

  if (len < 4)
  	{
  	  *errmsg = (lan_type == 2)?(_ERR_CH_MN_HOSTNAME_TOOSHORT_):(_ERR_EN_MN_HOSTNAME_TOOSHORT_);
  	  return 0;
  	}
  
  if (!(((hoststr[0] >= 'a') && (hoststr[0] <= 'z')) || ((hoststr[0] >= 'A') && (hoststr[0] <= 'Z'))))
  	{
  	  *errmsg = (lan_type == 2)?(_ERR_CH_MN_HOSTNAME_FIRSTCHAR_):(_ERR_EN_MN_HOSTNAME_FIRSTCHAR_);
      return 0;
  	}
  
  for (i = 0; i < len; i++)
    {
      if (!(((hoststr[i] >= 'a') && (hoststr[i] <= 'z')) || ((hoststr[i] >= 'A') && (hoststr[i] <= 'Z')) || ((hoststr[i] >= '0') && (hoststr[i] <= '9')) || (hoststr[i] == '_') ))
        {
          *errmsg = (lan_type == 2)?(_ERR_CH_MN_HOSTNAME_ILLEGALCHAR_):(_ERR_EN_MN_HOSTNAME_ILLEGALCHAR_);
          return 0;
        }
    }

  return 1;
}


int mn_set_hostname(char *new_hostname, char **errmsg,unsigned short lan_type)
{
  if (mn_check_hostname_legal(new_hostname,errmsg,lan_type))
    {
  	  memset(mn_hostname,0,_MN_MAX_HOSTNAME_LEN_);
          memcpy(mn_hostname,new_hostname,strlen(new_hostname));
          return 1;
    }
  else
    {
  	  return 0;
    }
}

char *mn_get_hostname(void)
{
  char *hostname;
  hostname = mn_hostname; 
  return hostname;
}

int mn_check_str_legal(char *str,char **errmsg,unsigned short lan_type)
{
  int i;
  int len;

  len = strlen(str);
  if (len > 100)
  	{
  	  *errmsg = (lan_type == 2)?(_ERR_CH_MN_STR_TOOLONG_):(_ERR_EN_MN_STR_TOOLONG_);
          return 0;
  	}  
  
  for (i = 0; i < len; i++)
    {
      if (!(((str[i] >= 'a') && (str[i] <= 'z')) || ((str[i] >= 'A') && (str[i] <= 'Z')) || ((str[i] >= '0') && (str[i] <= '9')) || (str[i] == '_') ||(str[i] == ' ')))
        {
          *errmsg = (lan_type == 2)?(_ERR_CH_MN_STR_ILLEGALCHAR_):(_ERR_EN_MN_STR_ILLEGALCHAR_);
          return 0;
        }
    }

  return 1;

}


int mn_set_syscontact(char *new_syscontact, char **errmsg,unsigned short lan_type)
{
  if (mn_check_str_legal(new_syscontact,errmsg,lan_type))
    {
  	  memset(mn_syscontact,0,_MN_MAX_SYSCONTACT_LEN_);
          memcpy(mn_syscontact,new_syscontact,strlen(new_syscontact));
          return 1;
    }
  else
    {
  	  return 0;
    }

}

char *mn_get_syscontact(void)
{
  return mn_syscontact;
}

int mn_set_syslocation(char *new_syslocation, char **errmsg, unsigned short lan_type)
{
  if (mn_check_str_legal(new_syslocation,errmsg,lan_type))
    {
  	  memset(mn_syslocation,0,_MN_MAX_SYSLOCATION_LEN_);
          memcpy(mn_syslocation,new_syslocation,strlen(new_syslocation));
          return 1;
    }
  else
    {
  	  return 0;
    }
 
}

char *mn_get_syslocation(void)
{
  return mn_syslocation;
}

char *mn_get_sysdescr(void)
{
  return mn_sys_descr;
}

char *mn_format_to_str(int mod_id,const char *format, ...)
{
  va_list args;
  int len;
  char buf[300];
  char *ret;

  va_start(args,format);

  memset(buf,0,300);
  len = vsnprintf(buf,sizeof(buf),format,args);
  if (len < 0)
  	{
  	  va_end(args);
  	  return NULL;
  	}  




  
  ret = (char *) kmalloc((len+1),mod_id);
  memset(ret,0,(len+1));
  memcpy(ret,buf,len);

  
  va_end(args);
  return ret;
  
  	
}

int mn_fd_printf(int fd,const char *format, ...)
{
  va_list args;
  int len;
  char buf[300];
  char *ret;

  if (fd < 0)
    {
      return 0;
    }
  
  va_start(args,format);
  memset(buf,0,300);
  len = vsnprintf(buf,sizeof(buf),format,args);
  if (len < 0)
  	{
  	  va_end(args);
  	  return NULL;
  	}  
  
  ret = (char *) kmalloc((len+1),_MM_MOD_MN_PUB_ID_);
  memset(ret,0,(len+1));
  memcpy(ret,buf,len);
  va_end(args);

  write(fd,ret,(len+1));
  kfree(ret);
  
  return 1;
  
}

#if 0
/****************************
Defined in file /include/mod_flag.h
******************************/
#define _MM_MOD_MN_PUB_ID_   100  /* management public */

#define _MM_MOD_UM_ID_      110    /* user manage */

#define _MM_MOD_CLI_ID_      120    /* cli */

#define _MM_MOD_CLI_PING_ID_ 121    /* ping command */

#define _MM_MOD_WS_ID_	 130   /* web server */

#define _MM_MOD_WS_PAGES_ID_	 140   /* web pages */

#define _MM_MOD_SNMP_ID_      150   /* Snmp */

#define _MM_MOD_SNMP_MIB_ID_ 160 /* snmp mib */

#define _MM_MOD_SNMP_RMON_ID_ 170 /* snmp rmon */

#endif

int mn_module_id_to_str(int module_id,char *module_name)
{
  switch (module_id)
    {
      case (_MM_MOD_MN_PUB_ID_):
        sprintf(module_name,"Manage_Pulic");
        break;
      case (_MM_MOD_UM_ID_):
        sprintf(module_name,"User_Manage");
        break;
      case (_MM_MOD_CLI_ID_):
        sprintf(module_name,"Cli");
        break;
      case (_MM_MOD_CLI_PING_ID_):  
        sprintf(module_name,"Cli_Ping");
        break;
      case (_MM_MOD_WS_ID_):
        sprintf(module_name,"Web_Server");
        break;
      case (_MM_MOD_WS_PAGES_ID_):
        sprintf(module_name,"Web_Pages");
        break;
      case (_MM_MOD_SNMP_ID_):  
        sprintf(module_name,"SNMP");
        break;
      case (_MM_MOD_SNMP_MIB_ID_):
        sprintf(module_name,"SNMP_MIB");
        break;
      case (_MM_MOD_SNMP_RMON_ID_):
        sprintf(module_name,"SNMP_RMON");
        break;
      default:
        sprintf(module_name,"Manage");
        break;
        
    }
  
  return 1;
}


char *mn_get_vendor_name(void)
{
  char *ret;
  ret = _HOS_VENDOR_NAME_;
  return ret;  
}

char *mn_get_sys_name(void)
{
  char *ret;
  ret = _HOS_SYSNAME_;
  return ret;  
}

char *mn_get_software_version(void)
{
  char *ret;
  ret = _HOS_SOFTWARE_VERSION_;
  return ret;  
}

char *mn_get_vendor_location(void)
{
  char *ret;
  ret = _HOS_VENDOR_LOCATION_;
  return ret;  
}



char *mn_get_copyright_info(void)
{
  char *ret;
  ret = _HOS_COPYRIGHT_INFO_;
  return ret;  

}


char *mn_get_product_name(void)
{
#ifdef _MN_NEW_SYSINFO_
  if (system_info_init_flag == 0)
  	{
  	  load_sysinfo();
  	}
  return sysinfo[0].product_name;
#else
  return NULL;
#endif

}

char *mn_get_serial_no(void)
{
#ifdef _MN_NEW_SYSINFO_
  if (system_info_init_flag == 0)
  	{
  	  load_sysinfo();
  	}
  return sysinfo[0].serial_no;
#else
  return NULL;
#endif

}


char *mn_get_base_mac(void)
{
#ifdef _MN_NEW_SYSINFO_
  char *base_mac;

  if (system_info_init_flag == 0)
  	{
  	  load_sysinfo();
  	}
  base_mac=(char *)malloc(13);
  memset(base_mac,0,13);
  sprintf(base_mac,"%.2x%.2x%.2x%.2x%.2x%.2x",sysinfo[0].flex_mac_addr[0].addr[0],sysinfo[0].flex_mac_addr[0].addr[1],sysinfo[0].flex_mac_addr[0].addr[2],sysinfo[0].flex_mac_addr[0].addr[3],sysinfo[0].flex_mac_addr[0].addr[4],sysinfo[0].flex_mac_addr[0].addr[5]);
  return base_mac;
#else
  return NULL;
#endif

}


char *mn_get_product_date(void)
{
#ifdef _MN_NEW_SYSINFO_
  if (system_info_init_flag == 0)
  	{
  	  load_sysinfo();
  	}
  return sysinfo[0].product_date;
#else
  return NULL;
#endif

}


char *mn_get_hardware_version(void)
{
#ifdef _MN_NEW_SYSINFO_
  if (system_info_init_flag == 0)
  	{
  	  load_sysinfo();
  	}
  return sysinfo[0].hardware_version;
#else
  return NULL;
#endif
}

char *mn_get_bootrom_version(void)
{
#ifdef _MN_NEW_SYSINFO_
  if (system_info_init_flag == 0)
  	{
  	  load_sysinfo();
  	}
  return sysinfo[0].bootrom_version;
#else
  return NULL;
#endif
}

char * kinet_ntoa(struct in_addr *in_addrs,int mod_id)
{
  
    __u32 ip;
    char i[4];
    char *ipaddr;
    ip = in_addrs->s_addr;
	
    i[0] = i[1] = i[2] = i[3] = 0;
    bcopy((char *)&ip,((char *)(&i[0])),1);
    bcopy((char *)&ip+1,((char *)(&i[1])),1);
    bcopy((char *)&ip+2,((char *)(&i[2])),1);
    bcopy((char *)&ip+3,((char *)(&i[3])),1);

    ipaddr = (char *)kmalloc(16,mod_id);
    memset(ipaddr,0,16);
    sprintf(ipaddr,"%d.%d.%d.%d",i[0],i[1],i[2],i[3]);
    ipaddr[15] = '\0';
    return ipaddr;
}



#ifdef _cplusplus
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -