Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Achou.Wang
accel-ppp
提交
084510b3
A
accel-ppp
项目概览
Achou.Wang
/
accel-ppp
通知
6
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
accel-ppp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
084510b3
编写于
11月 25, 2015
作者:
D
Dmitry Kozlov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ipoe: calculate renew time if not specified
上级
2f881381
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
6 deletion
+26
-6
accel-pppd/ctrl/ipoe/ipoe.c
accel-pppd/ctrl/ipoe/ipoe.c
+26
-6
未找到文件。
accel-pppd/ctrl/ipoe/ipoe.c
浏览文件 @
084510b3
...
@@ -1919,6 +1919,7 @@ static void ev_radius_access_accept(struct ev_radius_t *ev)
...
@@ -1919,6 +1919,7 @@ static void ev_radius_access_accept(struct ev_radius_t *ev)
{
{
struct
ipoe_session
*
ses
=
container_of
(
ev
->
ses
,
typeof
(
*
ses
),
ses
);
struct
ipoe_session
*
ses
=
container_of
(
ev
->
ses
,
typeof
(
*
ses
),
ses
);
struct
rad_attr_t
*
attr
;
struct
rad_attr_t
*
attr
;
int
lease_time_set
=
0
,
renew_time_set
=
0
;
if
(
ev
->
ses
->
ctrl
->
type
!=
CTRL_TYPE_IPOE
)
if
(
ev
->
ses
->
ctrl
->
type
!=
CTRL_TYPE_IPOE
)
return
;
return
;
...
@@ -1948,17 +1949,26 @@ static void ev_radius_access_accept(struct ev_radius_t *ev)
...
@@ -1948,17 +1949,26 @@ static void ev_radius_access_accept(struct ev_radius_t *ev)
ses
->
l4_redirect
=
1
;
ses
->
l4_redirect
=
1
;
}
else
if
(
attr
->
val
.
integer
!=
0
)
}
else
if
(
attr
->
val
.
integer
!=
0
)
ses
->
l4_redirect
=
1
;
ses
->
l4_redirect
=
1
;
}
else
if
(
attr
->
attr
->
id
==
conf_attr_dhcp_lease_time
)
}
else
if
(
attr
->
attr
->
id
==
conf_attr_dhcp_lease_time
)
{
ses
->
lease_time
=
attr
->
val
.
integer
;
ses
->
lease_time
=
attr
->
val
.
integer
;
else
if
(
attr
->
attr
->
id
==
conf_attr_dhcp_renew_time
)
lease_time_set
=
1
;
}
else
if
(
attr
->
attr
->
id
==
conf_attr_dhcp_renew_time
)
{
ses
->
renew_time
=
attr
->
val
.
integer
;
ses
->
renew_time
=
attr
->
val
.
integer
;
else
if
(
attr
->
attr
->
id
==
conf_attr_l4_redirect_table
)
renew_time_set
=
1
;
}
else
if
(
attr
->
attr
->
id
==
conf_attr_l4_redirect_table
)
ses
->
l4_redirect_table
=
attr
->
val
.
integer
;
ses
->
l4_redirect_table
=
attr
->
val
.
integer
;
else
if
(
attr
->
attr
->
id
==
conf_attr_l4_redirect_ipset
)
{
else
if
(
attr
->
attr
->
id
==
conf_attr_l4_redirect_ipset
)
{
if
(
attr
->
attr
->
type
==
ATTR_TYPE_STRING
)
if
(
attr
->
attr
->
type
==
ATTR_TYPE_STRING
)
ses
->
l4_redirect_ipset
=
_strdup
(
attr
->
val
.
string
);
ses
->
l4_redirect_ipset
=
_strdup
(
attr
->
val
.
string
);
}
}
}
}
if
(
lease_time_set
&&
!
renew_time_set
)
ses
->
renew_time
=
ses
->
lease_time
/
2
;
else
if
(
renew_time_set
&&
ses
->
renew_time
>
ses
->
lease_time
)
{
log_ppp_warn
(
"ipoe: overriding renew time
\n
"
);
ses
->
renew_time
=
ses
->
lease_time
/
2
;
}
}
}
static
void
ev_radius_coa
(
struct
ev_radius_t
*
ev
)
static
void
ev_radius_coa
(
struct
ev_radius_t
*
ev
)
...
@@ -1966,6 +1976,7 @@ static void ev_radius_coa(struct ev_radius_t *ev)
...
@@ -1966,6 +1976,7 @@ static void ev_radius_coa(struct ev_radius_t *ev)
struct
ipoe_session
*
ses
=
container_of
(
ev
->
ses
,
typeof
(
*
ses
),
ses
);
struct
ipoe_session
*
ses
=
container_of
(
ev
->
ses
,
typeof
(
*
ses
),
ses
);
struct
rad_attr_t
*
attr
;
struct
rad_attr_t
*
attr
;
int
l4_redirect
;
int
l4_redirect
;
int
lease_time_set
=
0
,
renew_time_set
=
0
;
if
(
ev
->
ses
->
ctrl
->
type
!=
CTRL_TYPE_IPOE
)
if
(
ev
->
ses
->
ctrl
->
type
!=
CTRL_TYPE_IPOE
)
return
;
return
;
...
@@ -1981,11 +1992,13 @@ static void ev_radius_coa(struct ev_radius_t *ev)
...
@@ -1981,11 +1992,13 @@ static void ev_radius_coa(struct ev_radius_t *ev)
}
else
if
(
strcmp
(
attr
->
attr
->
name
,
"Framed-IP-Address"
)
==
0
)
{
}
else
if
(
strcmp
(
attr
->
attr
->
name
,
"Framed-IP-Address"
)
==
0
)
{
if
(
ses
->
ses
.
ipv4
&&
ses
->
ses
.
ipv4
->
peer_addr
!=
attr
->
val
.
ipaddr
)
if
(
ses
->
ses
.
ipv4
&&
ses
->
ses
.
ipv4
->
peer_addr
!=
attr
->
val
.
ipaddr
)
ipoe_change_addr
(
ses
,
attr
->
val
.
ipaddr
);
ipoe_change_addr
(
ses
,
attr
->
val
.
ipaddr
);
}
else
if
(
attr
->
attr
->
id
==
conf_attr_dhcp_lease_time
)
}
else
if
(
attr
->
attr
->
id
==
conf_attr_dhcp_lease_time
)
{
ses
->
lease_time
=
attr
->
val
.
integer
;
ses
->
lease_time
=
attr
->
val
.
integer
;
else
if
(
attr
->
attr
->
id
==
conf_attr_dhcp_renew_time
)
lease_time_set
=
1
;
}
else
if
(
attr
->
attr
->
id
==
conf_attr_dhcp_renew_time
)
{
ses
->
renew_time
=
attr
->
val
.
integer
;
ses
->
renew_time
=
attr
->
val
.
integer
;
else
if
(
attr
->
attr
->
id
==
conf_attr_l4_redirect_table
)
renew_time_set
=
1
;
}
else
if
(
attr
->
attr
->
id
==
conf_attr_l4_redirect_table
)
ses
->
l4_redirect_table
=
attr
->
val
.
integer
;
ses
->
l4_redirect_table
=
attr
->
val
.
integer
;
else
if
(
attr
->
attr
->
id
==
conf_attr_l4_redirect_ipset
)
{
else
if
(
attr
->
attr
->
id
==
conf_attr_l4_redirect_ipset
)
{
if
(
attr
->
attr
->
type
==
ATTR_TYPE_STRING
)
{
if
(
attr
->
attr
->
type
==
ATTR_TYPE_STRING
)
{
...
@@ -1997,6 +2010,13 @@ static void ev_radius_coa(struct ev_radius_t *ev)
...
@@ -1997,6 +2010,13 @@ static void ev_radius_coa(struct ev_radius_t *ev)
}
}
}
}
if
(
lease_time_set
&&
!
renew_time_set
)
ses
->
renew_time
=
ses
->
lease_time
/
2
;
else
if
(
renew_time_set
&&
ses
->
renew_time
>
ses
->
lease_time
)
{
log_ppp_warn
(
"ipoe: overriding renew time
\n
"
);
ses
->
renew_time
=
ses
->
lease_time
/
2
;
}
//if (l4_redirect && !ses->l4_redirect) || (!l4_redirect && ses->l4_redirect))
//if (l4_redirect && !ses->l4_redirect) || (!l4_redirect && ses->l4_redirect))
if
(
l4_redirect
!=
ses
->
l4_redirect
&&
ev
->
ses
->
state
==
AP_STATE_ACTIVE
)
if
(
l4_redirect
!=
ses
->
l4_redirect
&&
ev
->
ses
->
state
==
AP_STATE_ACTIVE
)
ipoe_change_l4_redirect
(
ses
,
l4_redirect
);
ipoe_change_l4_redirect
(
ses
,
l4_redirect
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录