LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: gnap

在锐捷802.1x网络中使用xsupplicant的补丁进行认证源代码和教程 [原创]

[复制链接]
 楼主| 发表于 2006-5-8 13:46:58 | 显示全部楼层
Post by chenzhijin1980
把所有出现"netinet/in.h"一类错误的源文件中,都确保开头的#include <sys/types.h>一行在#include<netinet/in.h>之前。

psk.c: In function `psk_wpa_pbkdf2_f':
psk.c:35: error: `SHA_DIGEST_LENGTH' undeclared (first use in this function)
psk.c:35: error: (Each undeclared identifier is reported only once
psk.c:35: error: for each function it appears in.)
psk.c:35: warning: unused variable `digest1'
psk.c: In function `psk_wpa_pbkdf2':
psk.c:84: error: `SHA_DIGEST_LENGTH' undeclared (first use in this function)
*** Error code 1

Stop in /tmp/xsupplicant-1.2.1/src.
*** Error code 1

sha1.c这个文件没有#include <sys/types.h>这个

Stop in /tmp/xsupplicant-1.2.1 (line 229 of Makefile).
n file included from eap_types/sim/sha1.c:23:
/usr/include/netinet/in.h:136: error: syntax error before "in_addr_t"
/usr/include/netinet/in.h:213: error: syntax error before "u_int8_t"
/usr/include/netinet/in.h:217: error: syntax error before "int8_t"
/usr/include/netinet/in.h:232: error: syntax error before "int8_t"
In file included from /usr/include/netinet/in.h:553,
                 from eap_types/sim/sha1.c:23:
/usr/include/netinet6/in6.h:118: error: syntax error before "u_int8_t"
/usr/include/netinet6/in6.h:140: error: syntax error before "u_int8_t"
/usr/include/netinet6/in6.h:145: error: syntax error before "u_int32_t"
/usr/include/netinet6/in6.h:667: error: syntax error before '*' token
/usr/include/netinet6/in6.h:669: error: syntax error before '*' token
/usr/include/netinet6/in6.h:670: error: syntax error before "u_int8_t"
/usr/include/netinet6/in6.h:671: error: syntax error before "u_int8_t"
eap_types/sim/sha1.c: In function `nossl_SHA1_Transform':
eap_types/sim/sha1.c:71: warning: implicit declaration of function `htonl'
*** Error code 1

Stop in /tmp/xsupplicant-1.2.1/src (line 367 of Makefile).

1.2.4版本的错误与此一样


恩,问题接近解决的边缘了!你试试grep SHA_DIGEST_LENGTH /usr/include/*
和 grep SHA_DIGEST_LENGTH /usr/include/openssl/*
两条命令。
看看SHA_DIGEST_LENGTH定义在哪个文件里。然后引用在psk.c中。

根据Google来的资料,可能是/usr/include/sha.h。那么只要加上#include <sha.h>即可了。

PS:没办法只能这样了,后面可能还有麻烦。如果编译后还有认证的问题,那么可能要你tcpdump一些数据包给我。问题解决后,你的名字会放在帖子里声明。
回复 支持 反对

使用道具 举报

发表于 2006-5-8 18:28:31 | 显示全部楼层
在psk.c中加
#include <openssl/sha.h>

把eap.c中的
#include <sys/types.h>放前面

在sha1.c,xsup_ipc.c,ipc_callout.c中加
#include <sys/types.h>

In function `packet_catch':
cardif/generic/cardif_generic.c:45: warning: control reaches end of non-void fun
ction
cardif/generic/cardif_generic.c: In function `setup_pcap':
cardif/generic/cardif_generic.c:73: warning: passing arg 1 of `eth_ntoa' from in
compatible pointer type
cardif/generic/cardif_generic.c: In function `cardif_init':
cardif/generic/cardif_generic.c:139: warning: passing arg 2 of `eth_get' from in
compatible pointer type
cardif/generic/cardif_generic.c: At top level:
cardif/generic/cardif_generic.c:317: error: conflicting types for `cardif_sendfr
ame'
cardif/cardif.h:123: error: previous declaration of `cardif_sendframe'
cardif/generic/cardif_generic.c: In function `cardif_sendframe':
cardif/generic/cardif_generic.c:340: error: structure has no member named `userd
ata'
cardif/generic/cardif_generic.c:345: error: structure has no member named `userd
ata'
cardif/generic/cardif_generic.c: In function `cardif_getframe':
cardif/generic/cardif_generic.c:393: warning: implicit declaration of function `
snmp_dot1xSuppEapolFramesRx'
*** Error code 1

Stop in /home/jim/misc/xsupplicant-1.2.1/src (line 493 of Makefile).
*** Error code 1

Stop in /home/jim/misc/xsupplicant-1.2.1 (line 229 of Makefile).
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-8 18:52:34 | 显示全部楼层
Post by chenzhijin1980
在psk.c中加
#include <openssl/sha.h>

把eap.c中的
#include <sys/types.h>放前面

在sha1.c,xsup_ipc.c,ipc_callout.c中加
#include <sys/types.h>

In function `packet_catch':
cardif/generic/cardif_generic.c:45: warning: control reaches end of non-void fun
ction
cardif/generic/cardif_generic.c: In function `setup_pcap':
cardif/generic/cardif_generic.c:73: warning: passing arg 1 of `eth_ntoa' from in
compatible pointer type
cardif/generic/cardif_generic.c: In function `cardif_init':
cardif/generic/cardif_generic.c:139: warning: passing arg 2 of `eth_get' from in
compatible pointer type
cardif/generic/cardif_generic.c: At top level:
cardif/generic/cardif_generic.c:317: error: conflicting types for `cardif_sendfr
ame'
cardif/cardif.h:123: error: previous declaration of `cardif_sendframe'
cardif/generic/cardif_generic.c: In function `cardif_sendframe':
cardif/generic/cardif_generic.c:340: error: structure has no member named `userd
ata'
cardif/generic/cardif_generic.c:345: error: structure has no member named `userd
ata'
cardif/generic/cardif_generic.c: In function `cardif_getframe':
cardif/generic/cardif_generic.c:393: warning: implicit declaration of function `
snmp_dot1xSuppEapolFramesRx'
*** Error code 1

Stop in /home/jim/misc/xsupplicant-1.2.1/src (line 493 of Makefile).
*** Error code 1

Stop in /home/jim/misc/xsupplicant-1.2.1 (line 229 of Makefile).


恩,终于到了这步了。基本上到了这步我就无能为力了。如果想尝试的话,先试试安装libpcap(应该是),然后在configure的时候用参数指明使用libpcap。我没有试过,不能提供更多的信息了。

这个补丁最初是在FreeBSD上开发的,当时CVS里面已经有了FreeBSD的支持,后来做成了1.2.1的补丁。从configure.in上看是对Linux/FreeBSD是直接调用RawSocket/BPF的,OpenBSD的借口有什么区别我就不知道了。如果使用libpcap能够编译,那就再好不过了。

如果用libpcap尝试不成功,那么只能:1、检查官方的CVS,看看是否添加了OpenBSD的支持,2、Google,等待或寻找有是否有人做了OpenBSD下的补丁,3、自己动手移植到OpenBSD上去。
回复 支持 反对

使用道具 举报

发表于 2006-5-8 21:10:35 | 显示全部楼层
兄弟我不会编程啊
可惜了
要是能用mystar就好了
在suse中可以直接用mystar,可以说非常好用,认证速度快,稳定。比xrgsu好上几百倍。

在OB中
#sysctl kern.emul.liunx=1 (兼容运行linux二进制)
#chmod a+x mystar
#chown root mystar
#./mystar
提示
Operation not permitted!
自己编译也不行。
玩不动了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-8 22:01:42 | 显示全部楼层
Post by chenzhijin1980
兄弟我不会编程啊
可惜了
要是能用mystar就好了
在suse中可以直接用mystar,可以说非常好用,认证速度快,稳定。比xrgsu好上几百倍。

在OB中
#sysctl kern.emul.liunx=1 (兼容运行linux二进制)
#chmod a+x mystar
#chown root mystar
#./mystar
提示
Operation not permitted!
自己编译也不行。
玩不动了。


呵呵!~我的补丁就相当于把mystar并入了xsupplicant。当时写的时候参考了很多mystar的代码。
回复 支持 反对

使用道具 举报

发表于 2006-5-9 00:03:25 | 显示全部楼层
强,不错,有空我也要学学编程,太丢脸了。
回复 支持 反对

使用道具 举报

发表于 2006-5-9 11:17:19 | 显示全部楼层
现在的学校,真tmd黑,教育真的产业化啦,我们学生的日子很难过了!!!

教的东西一点用都没有,用的东西全靠自学,我到底来大学干吗?
自学,自学为什么还要交那么多的 学费?
回复 支持 反对

使用道具 举报

发表于 2006-5-9 12:30:45 | 显示全部楼层

更正

更正一下:
“最近我们学校大量的学生因为锐捷的客户端导致不能安装VMware,严重影响学校正常的教学计划。大家遇到这种情况应当向校方施压,呼吁一个开放的解决办法。”

如果是Windosw系统,在VMware网络中心设置中,删开两个网卡就行了(1,8)。我也是使用锐捷认证,也使用VMware,内外都可以上网(设置为NAT就行了)

至于Linux版……我的注册号过期了……还未试过!试试将1,8两网卡删了看~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-9 19:56:08 | 显示全部楼层
Post by KDF2003
更正一下:
“最近我们学校大量的学生因为锐捷的客户端导致不能安装VMware,严重影响学校正常的教学计划。大家遇到这种情况应当向校方施压,呼吁一个开放的解决办法。”

如果是Windosw系统,在VMware网络中心设置中,删开两个网卡就行了(1,8)。我也是使用锐捷认证,也使用VMware,内外都可以上网(设置为NAT就行了)

至于Linux版……我的注册号过期了……还未试过!试试将1,8两网卡删了看~

呵呵!~多谢,改成“严重影响VMware某些功能的使用”:%
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-9 20:01:34 | 显示全部楼层
Post by rmblover
现在的学校,真tmd黑,教育真的产业化啦,我们学生的日子很难过了!!!

教的东西一点用都没有,用的东西全靠自学,我到底来大学干吗?
自学,自学为什么还要交那么多的 学费?


学校缺少职业顾问,学生和家长缺少沟通和理解,是导致当前学生问题的主要原因。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表