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

📄 ipsec_proc.c

📁 This a good VPN source
💻 C
📖 第 1 页 / 共 3 页
字号:
				char *natttype_name;				switch(sa_p->ips_natt_type)				{				case ESPINUDP_WITH_NON_IKE:					natttype_name="nonike";					break;				case ESPINUDP_WITH_NON_ESP:					natttype_name="nonesp";					break;				default:					natttype_name = "unknown";					break;				}				len += ipsec_snprintf(buffer + len, length-len, " natencap=%s",					       natttype_name);								len += ipsec_snprintf(buffer + len, length-len, " natsport=%d",					       sa_p->ips_natt_sport);								len += ipsec_snprintf(buffer + len,length-len, " natdport=%d",					       sa_p->ips_natt_dport);			}#endif /* CONFIG_KLIPS_NAT_TRAVERSAL */							len += ipsec_snprintf(buffer + len,length-len, " refcount=%d",				       atomic_read(&sa_p->ips_refcount));			len += ipsec_snprintf(buffer+len, length-len, " ref=%d",				       sa_p->ips_ref);#ifdef CONFIG_KLIPS_DEBUG			if(debug_xform) {			len += ipsec_snprintf(buffer+len, length-len, " reftable=%lu refentry=%lu",				       (unsigned long)IPsecSAref2table(sa_p->ips_ref),				       (unsigned long)IPsecSAref2entry(sa_p->ips_ref));			}#endif /* CONFIG_KLIPS_DEBUG */			len += ipsec_snprintf(buffer+len, length-len, "\n");                        atomic_dec(&sa_p->ips_refcount);                                                  if (len >= max_content) {                               /* we've done all that can fit -- stop loops */                               len = max_content;      /* truncate crap */                                goto done_spi_i;                        } else {                               const off_t pos = begin + len;  /* file position of end of what we've generated */                               if (pos <= offset) {                                       /* all is before first interesting character:                                        * discard, but note where we are.                                        */                                       len = 0;                                       begin = pos;                               }                        }                }        }done_spi_i:		spin_unlock_bh(&tdb_lock);	*start = buffer + (offset - begin);	/* Start of wanted data */	return len - (offset - begin);}IPSEC_PROCFS_DEBUG_NO_STATICintipsec_spigrp_get_info(char *buffer,		      char **start,		      off_t offset,		      int length     IPSEC_PROC_LAST_ARG){	/* Limit of useful snprintf output */	const int max_content = length > 0? length-1 : 0; 	int len = 0;	off_t begin = 0;	int i;	struct ipsec_sa *sa_p, *sa_p2;	char sa[SATOT_BUF];	size_t sa_len;	KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,		    "klips_debug:ipsec_spigrp_get_info: "		    "buffer=0p%p, *start=0p%p, offset=%d, length=%d\n",		    buffer,		    *start,		    (int)offset,		    length);	spin_lock_bh(&tdb_lock);		for (i = 0; i < SADB_HASHMOD; i++) {		for (sa_p = ipsec_sadb_hash[i];		     sa_p != NULL;		     sa_p = sa_p->ips_hnext)		{			atomic_inc(&sa_p->ips_refcount);			if(sa_p->ips_inext == NULL) {				sa_p2 = sa_p;				while(sa_p2 != NULL) {					atomic_inc(&sa_p2->ips_refcount);					sa_len = satot(&sa_p2->ips_said,						       'x', sa, sizeof(sa));										len += ipsec_snprintf(buffer+len, length-len, "%s ",						       sa_len ? sa : " (error)");					atomic_dec(&sa_p2->ips_refcount);					sa_p2 = sa_p2->ips_onext;				}				len += ipsec_snprintf(buffer+len, length-len, "\n");                       }                       atomic_dec(&sa_p->ips_refcount);                                                               if (len >= max_content) {                               /* we've done all that can fit -- stop loops */                               len = max_content;      /* truncate crap */                               goto done_spigrp_i;                       } else {                               const off_t pos = begin + len;                               if (pos <= offset) {                                       /* all is before first interesting character:                                        * discard, but note where we are.                                        */                                        len = 0;                                        begin = pos;                               }                       }		}	}done_spigrp_i:		spin_unlock_bh(&tdb_lock);	*start = buffer + (offset - begin);	/* Start of wanted data */	return len - (offset - begin);}IPSEC_PROCFS_DEBUG_NO_STATICintipsec_tncfg_get_info(char *buffer,		     char **start,		     off_t offset,		     int length     IPSEC_PROC_LAST_ARG){	/* limit of useful snprintf output */ 	const int max_content = length > 0? length-1 : 0;	int len = 0;	off_t begin = 0;	int i;	char name[9];	struct net_device *dev, *privdev;	struct ipsecpriv *priv;	KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,		    "klips_debug:ipsec_tncfg_get_info: "		    "buffer=0p%p, *start=0p%p, offset=%d, length=%d\n",		    buffer,		    *start,		    (int)offset,		    length);	for(i = 0; i < IPSEC_NUM_IF; i++) {		ipsec_snprintf(name, (ssize_t) sizeof(name), IPSEC_DEV_FORMAT, i);		dev = __ipsec_dev_get(name);		if(dev) {			priv = (struct ipsecpriv *)(dev->priv);			len += ipsec_snprintf(buffer+len, length-len, "%s",				       dev->name);			if(priv) {				privdev = (struct net_device *)(priv->dev);				len += ipsec_snprintf(buffer+len, length-len, " -> %s",					       privdev ? privdev->name : "NULL");				len += ipsec_snprintf(buffer+len, length-len, " mtu=%d(%d) -> %d",					       dev->mtu,					       priv->mtu,					       privdev ? privdev->mtu : 0);			} else {				KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,					    "klips_debug:ipsec_tncfg_get_info: device '%s' has no private data space!\n",					    dev->name);			}			len += ipsec_snprintf(buffer+len, length-len, "\n");                        if (len >= max_content) {                                /* we've done all that can fit -- stop loop */                                len = max_content;      /* truncate crap */                                 break;                        } else {                                const off_t pos = begin + len;                                if (pos <= offset) {                                        len = 0;                                        begin = pos;                                }			}		}	}	*start = buffer + (offset - begin);	/* Start of wanted data */	len -= (offset - begin);			/* Start slop */	if (len > length)		len = length;	return len;}IPSEC_PROCFS_DEBUG_NO_STATICintipsec_version_get_info(char *buffer,		       char **start,		       off_t offset,		       int length  IPSEC_PROC_LAST_ARG){	int len = 0;	off_t begin = 0;	KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,		    "klips_debug:ipsec_version_get_info: "		    "buffer=0p%p, *start=0p%p, offset=%d, length=%d\n",		    buffer,		    *start,		    (int)offset,		    length);	len += ipsec_snprintf(buffer + len,length-len, "Openswan version: %s\n",		       ipsec_version_code());#if 0	KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,		    "klips_debug:ipsec_version_get_info: "		    "ipsec_init version: %s\n",		    ipsec_init_c_version);	KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,		    "klips_debug:ipsec_version_get_info: "		    "ipsec_tunnel version: %s\n",		    ipsec_tunnel_c_version);	KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,		    "klips_debug:ipsec_version_get_info: "		    "ipsec_netlink version: %s\n",		    ipsec_netlink_c_version);	KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,		    "klips_debug:ipsec_version_get_info: "		    "radij_c_version: %s\n",		    radij_c_version);#endif	*start = buffer + (offset - begin);	/* Start of wanted data */	len -= (offset - begin);			/* Start slop */	if (len > length)		len = length;	return len;}IPSEC_PROCFS_DEBUG_NO_STATICintipsec_birth_info(char *page,		 char **start,		 off_t offset,		 int count,		 int *eof,		 void *data){	struct ipsec_birth_reply *ibr = (struct ipsec_birth_reply *)data;	int len;	if(offset >= ibr->packet_template_len) {		if(eof) {			*eof=1;		}		return 0;	}	len = ibr->packet_template_len;	len -= offset;	if (len > count)		len = count;	memcpy(page + offset, ibr->packet_template+offset, len);	return len;}IPSEC_PROCFS_DEBUG_NO_STATICintipsec_birth_set(struct file *file, const char *buffer,		unsigned long count, void *data){	struct ipsec_birth_reply *ibr = (struct ipsec_birth_reply *)data;	int len;	KLIPS_INC_USE;        if(count > IPSEC_BIRTH_TEMPLATE_MAXLEN) {                len = IPSEC_BIRTH_TEMPLATE_MAXLEN;	} else {                len = count;	}        if(copy_from_user(ibr->packet_template, buffer, len)) {                KLIPS_DEC_USE;                return -EFAULT;        }	ibr->packet_template_len = len;        KLIPS_DEC_USE;        return len;}#ifdef CONFIG_KLIPS_DEBUGIPSEC_PROCFS_DEBUG_NO_STATICintipsec_klipsdebug_get_info(char *buffer,			  char **start,			  off_t offset,			  int length      IPSEC_PROC_LAST_ARG){	int len = 0;	off_t begin = 0;	KLIPS_PRINT(debug_tunnel & DB_TN_PROCFS,		    "klips_debug:ipsec_klipsdebug_get_info: "		    "buffer=0p%p, *start=0p%p, offset=%d, length=%d\n",		    buffer,		    *start,		    (int)offset,		    length);	len += ipsec_snprintf(buffer+len, length-len, "debug_tunnel=%08x.\n", debug_tunnel);	len += ipsec_snprintf(buffer+len, length-len, "debug_xform=%08x.\n", debug_xform);	len += ipsec_snprintf(buffer+len, length-len, "debug_eroute=%08x.\n", debug_eroute);	len += ipsec_snprintf(buffer+len, length-len, "debug_spi=%08x.\n", debug_spi);	len += ipsec_snprintf(buffer+len, length-len, "debug_radij=%08x.\n", debug_radij);	len += ipsec_snprintf(buffer+len, length-len, "debug_esp=%08x.\n", debug_esp);	len += ipsec_snprintf(buffer+len, length-len, "debug_ah=%08x.\n", debug_ah);	len += ipsec_snprintf(buffer+len, length-len, "debug_rcv=%08x.\n", debug_rcv);	len += ipsec_snprintf(buffer+len, length-len, "debug_pfkey=%08x.\n", debug_pfkey);	*start = buffer + (offset - begin);	/* Start of wanted data */	len -= (offset - begin);			/* Start slop */	if (len > length)		len = length;	return len;}#endif /* CONFIG_KLIPS_DEBUG */IPSEC_PROCFS_DEBUG_NO_STATICintipsec_stats_get_int_info(char *buffer,			 char **start,			 off_t offset,			 int   length,			 int   *eof,			 void  *data){	const int max_content = length > 0? length-1 : 0;	int len = 0;	int *thing;	thing = (int *)data;		len = ipsec_snprintf(buffer+len, length-len, "%08x\n", *thing);	if (len >= max_content)               len = max_content;      /* truncate crap */        *start = buffer + offset;       /* Start of wanted data */        return len > offset? len - offset : 0;}#ifndef PROC_FS_2325struct proc_dir_entry ipsec_eroute ={	0,	12, "ipsec_eroute",	S_IFREG | S_IRUGO, 1, 0, 0, 0,	&proc_net_inode_operations,

⌨️ 快捷键说明

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