Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
f8042120
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f8042120
编写于
10月 21, 1998
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
INET fix from D'Arcy.
上级
30d5e185
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
32 addition
and
29 deletion
+32
-29
src/backend/utils/adt/inet.c
src/backend/utils/adt/inet.c
+32
-29
未找到文件。
src/backend/utils/adt/inet.c
浏览文件 @
f8042120
...
...
@@ -3,7 +3,7 @@
* is for IP V4 CIDR notation, but prepared for V6: just
* add the necessary bits where the comments indicate.
*
* $Id: inet.c,v 1.
6 1998/10/20 23:03:19
momjian Exp $
* $Id: inet.c,v 1.
7 1998/10/21 02:48:22
momjian Exp $
*/
#include <sys/types.h>
...
...
@@ -57,9 +57,7 @@ inet_in(char *src)
}
/* First, try for an IP V4 address: */
ip_family
(
dst
)
=
AF_INET
;
#ifdef BAD
bits
=
inet_net_pton
(
ip_family
(
dst
),
src
,
&
ip_v4addr
(
dst
),
ip_addrsize
(
dst
),
NULL
);
#endif
bits
=
inet_net_pton
(
ip_family
(
dst
),
src
,
&
ip_v4addr
(
dst
),
ip_addrsize
(
dst
));
if
((
bits
<
0
)
||
(
bits
>
32
))
{
/* Go for an IPV6 address here, before faulting out: */
...
...
@@ -87,14 +85,12 @@ inet_out(inet *src)
if
(
ip_family
(
src
)
==
AF_INET
)
{
/* It's an IP V4 address: */
#ifdef BAD
if
(
inet_net_ntop
(
AF_INET
,
&
ip_v4addr
(
src
),
4
,
ip_bits
(
src
),
if
(
inet_net_ntop
(
AF_INET
,
&
ip_v4addr
(
src
),
ip_bits
(
src
),
tmp
,
sizeof
(
tmp
))
<
0
)
{
elog
(
ERROR
,
"unable to print address (%s)"
,
strerror
(
errno
));
return
(
NULL
);
}
#endif
}
else
{
...
...
@@ -272,22 +268,22 @@ inet_cmp(inet *a1, inet *a2)
text
*
inet_netmask
(
inet
*
ip
)
{
char
*
dst
,
text
*
ret
;
int
len
;
char
*
ptr
,
tmp
[
sizeof
(
"255.255.255.255/32"
)];
if
(
ip_family
(
ip
)
==
AF_INET
)
{
/* It's an IP V4 address: */
int
addr
=
-
1
<<
(
32
-
ip_bits
(
ip
)
);
int
addr
=
htonl
((
-
1
<<
(
32
-
ip_bits
(
ip
)))
&
0xffffffff
);
/* a little wasteful by why reinvent the wheel? */
#ifdef BAD
if
(
inet_cidr_ntop
(
AF_INET
,
&
addr
,
4
,
-
1
,
tmp
,
sizeof
(
tmp
))
<
0
)
if
(
inet_net_ntop
(
AF_INET
,
&
addr
,
32
,
tmp
,
sizeof
(
tmp
))
<
0
)
{
elog
(
ERROR
,
"unable to print netmask (%s)"
,
strerror
(
errno
));
return
(
NULL
);
}
#endif
}
else
{
...
...
@@ -295,15 +291,18 @@ inet_netmask(inet *ip)
elog
(
ERROR
,
"unknown address family (%d)"
,
ip_family
(
ip
));
return
(
NULL
);
}
dst
=
palloc
(
strlen
(
tmp
)
+
1
);
if
(
dst
==
NULL
)
if
((
ptr
=
strchr
(
tmp
,
'/'
))
!=
NULL
)
*
ptr
=
0
;
len
=
VARHDRSZ
+
strlen
(
tmp
);
ret
=
palloc
(
len
);
if
(
ret
==
NULL
)
{
elog
(
ERROR
,
"unable to allocate memory in inet_netmask()"
);
return
(
NULL
);
}
strcpy
(
dst
,
tmp
)
;
return
(
dst
);
VARSIZE
(
ret
)
=
len
;
strcpy
(
VARDATA
(
ret
),
tmp
);
return
(
ret
);
}
int4
...
...
@@ -315,21 +314,22 @@ inet_masklen(inet *ip)
text
*
inet_broadcast
(
inet
*
ip
)
{
char
*
dst
,
tmp
[
sizeof
(
"255.255.255.255/32"
)];
text
*
ret
;
int
len
;
char
*
ptr
,
tmp
[
sizeof
(
"255.255.255.255/32"
)]
=
"Hello"
;
if
(
ip_family
(
ip
)
==
AF_INET
)
{
/* It's an IP V4 address: */
int
addr
=
ip_v4addr
(
ip
)
|
~
(
-
1
<<
(
32
-
ip_bits
(
ip
)));
#ifdef BAD
int
addr
=
htonl
(
ntohl
(
ip_v4addr
(
ip
))
|
(
0xffffffff
>>
ip_bits
(
ip
)));
/* int addr = htonl(ip_v4addr(ip) | (0xffffffff >> ip_bits(ip))); */
if
(
inet_
cidr_ntop
(
AF_INET
,
&
addr
,
4
,
ip_bits
(
ip
),
tmp
,
sizeof
(
tmp
))
<
0
)
if
(
inet_
net_ntop
(
AF_INET
,
&
addr
,
32
,
tmp
,
sizeof
(
tmp
))
<
0
)
{
elog
(
ERROR
,
"unable to print address (%s)"
,
strerror
(
errno
));
return
(
NULL
);
}
#endif
}
else
{
...
...
@@ -337,15 +337,18 @@ inet_broadcast(inet *ip)
elog
(
ERROR
,
"unknown address family (%d)"
,
ip_family
(
ip
));
return
(
NULL
);
}
dst
=
palloc
(
strlen
(
tmp
)
+
1
);
if
(
dst
==
NULL
)
if
((
ptr
=
strchr
(
tmp
,
'/'
))
!=
NULL
)
*
ptr
=
0
;
len
=
VARHDRSZ
+
strlen
(
tmp
);
ret
=
palloc
(
len
);
if
(
ret
==
NULL
)
{
elog
(
ERROR
,
"unable to allocate memory in inet_
ou
t()"
);
elog
(
ERROR
,
"unable to allocate memory in inet_
broadcas
t()"
);
return
(
NULL
);
}
strcpy
(
dst
,
tmp
)
;
return
(
dst
);
VARSIZE
(
ret
)
=
len
;
strcpy
(
VARDATA
(
ret
),
tmp
);
return
(
ret
);
}
/*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录