Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Achou.Wang
accel-ppp
提交
0cc1ca28
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 搜索 >>
提交
0cc1ca28
编写于
12月 05, 2017
作者:
D
Dmitry Kozlov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ippool: rewrited parsers
上级
e78709bf
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
11 deletion
+13
-11
accel-pppd/extra/ippool.c
accel-pppd/extra/ippool.c
+13
-11
未找到文件。
accel-pppd/extra/ippool.c
浏览文件 @
0cc1ca28
...
...
@@ -49,9 +49,12 @@ struct ipaddr_t
static
struct
ipdb_t
ipdb
;
static
in_addr_t
conf_gw_ip_address
;
static
int
conf_shuffle
;
#ifdef RADIUS
static
int
conf_vendor
=
0
;
static
int
conf_attr
=
88
;
// Framed-Pool
static
int
conf_shuffle
;
#endif
static
int
cnt
;
static
LIST_HEAD
(
pool_list
);
...
...
@@ -102,7 +105,7 @@ static void parse_gw_ip_address(const char *val)
//parses ranges like x.x.x.x/mask
static
int
parse1
(
const
char
*
str
,
uint32_t
*
begin
,
uint32_t
*
end
)
{
int
n
,
f1
,
f2
,
f3
,
f4
,
m
,
mask
=
0
;
int
n
,
f1
,
f2
,
f3
,
f4
,
m
;
n
=
sscanf
(
str
,
"%u.%u.%u.%u/%u"
,
&
f1
,
&
f2
,
&
f3
,
&
f4
,
&
m
);
if
(
n
!=
5
)
...
...
@@ -118,11 +121,10 @@ static int parse1(const char *str, uint32_t *begin, uint32_t *end)
if
(
m
==
0
||
m
>
32
)
return
-
1
;
*
begin
=
(
f
4
<<
24
)
|
(
f3
<<
16
)
|
(
f2
<<
8
)
|
f1
;
*
begin
=
(
f
1
<<
24
)
|
(
f2
<<
16
)
|
(
f3
<<
8
)
|
f4
;
mask
=
htonl
(
~
((
1
<<
(
32
-
m
))
-
1
));
*
end
=
ntohl
(
*
begin
|
~
mask
);
*
begin
=
ntohl
(
*
begin
);
m
=
m
==
32
?
0xffffffff
:
((
1
<<
(
32
-
m
))
-
1
);
*
end
=
*
begin
|
m
;
return
0
;
}
...
...
@@ -130,9 +132,9 @@ static int parse1(const char *str, uint32_t *begin, uint32_t *end)
//parses ranges like x.x.x.x-y
static
int
parse2
(
const
char
*
str
,
uint32_t
*
begin
,
uint32_t
*
end
)
{
int
n
,
f1
,
f2
,
f3
,
f4
,
m
;
int
n
,
f1
,
f2
,
f3
,
f4
,
f5
;
n
=
sscanf
(
str
,
"%u.%u.%u.%u-%u"
,
&
f1
,
&
f2
,
&
f3
,
&
f4
,
&
m
);
n
=
sscanf
(
str
,
"%u.%u.%u.%u-%u"
,
&
f1
,
&
f2
,
&
f3
,
&
f4
,
&
f5
);
if
(
n
!=
5
)
return
-
1
;
if
(
f1
>
255
)
...
...
@@ -143,11 +145,11 @@ static int parse2(const char *str, uint32_t *begin, uint32_t *end)
return
-
1
;
if
(
f4
>
255
)
return
-
1
;
if
(
m
<
f4
||
m
>
255
)
if
(
f5
<
f4
||
f5
>
255
)
return
-
1
;
*
begin
=
ntohl
((
f4
<<
24
)
|
(
f3
<<
16
)
|
(
f2
<<
8
)
|
f1
)
;
*
end
=
ntohl
((
m
<<
24
)
|
(
f3
<<
16
)
|
(
f2
<<
8
)
|
f1
)
;
*
begin
=
(
f1
<<
24
)
|
(
f2
<<
16
)
|
(
f3
<<
8
)
|
f4
;
*
end
=
(
f1
<<
24
)
|
(
f2
<<
16
)
|
(
f3
<<
8
)
|
f5
;
return
0
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录