2008年7月24日 星期四

Porting PPTP Client

需求:因為發生自家PPTP Client跟PPTP Server無法互連,所以更換新版的PPTP Client試試看。
版本:pptp-1.7.1
網址:http://lists.sourceforge.net/lists/listinfo/pptpclient-devel

Make:簡單修改Makefile的CC,STRIP的定義即可(ex: CC=gcc, STRIP=strip),然後下Make就可以了。

相關小修改:
由於我只是要測試而已,所以呼叫pppd的參數,我不是下給pptp再轉給pppd,我直接修改pptp.c的aunch_pppd() function。

void launch_pppd(char *ttydev, int argc, char **argv)
{
char *new_argv[argc + 4];/* XXX if not using GCC, hard code a limit here. */
int i = 0, j;
#if 0
new_argv[i++] = PPPD_BINARY;
#ifdef USER_PPP
new_argv[i++] = "-direct";
/* ppp expects to have stdin connected to ttydev */
if ((j = open(ttydev, O_RDWR)) == -1)
fatal("Cannot open %s: %s", ttydev, strerror(errno));
if (dup2(j, 0) == -1)
fatal("dup2 failed: %s", strerror(errno));
close(j);
#else
new_argv[i++] = ttydev;
new_argv[i++] = "38400";
#endif
for (j = 0; j < argc; j++)
new_argv[i++] = argv[j];
#endif
new_argv[0] = "/bin/opppd";
new_argv[1] = ttydev;
new_argv[2] = "38400";
new_argv[3] = "file";
new_argv[4] = "/etc/ppp/options2";
new_argv[5] = "name";
new_argv[6] = "1";
new_argv[7] = "password";
new_argv[8] = "1";
new_argv[9] = "nodetach";
new_argv[10] = "noipdefault";
new_argv[11] = "noauth";
new_argv[12] = "mppe";
new_argv[13] = "stateless";
new_argv[14] = NULL;

execvp(new_argv[0], new_argv);
}


使用方法:只要在shell下命令,pptp "ip" (ex: pptp 192.168.0.1),就會去連結你設定的pptp server。

0 意見: