1
1
//! Types/fns concerning Internet Protocol (IP), versions 4 & 6
2
+ #[ forbid( deprecated_mode) ] ;
3
+ #[ forbid( deprecated_pattern) ] ;
2
4
3
5
use iotask = uv:: iotask:: IoTask ;
4
6
use interact = uv:: iotask:: interact;
@@ -44,8 +46,8 @@ type ParseAddrErr = {
44
46
*
45
47
* * ip - a `std::net::ip::ip_addr`
46
48
*/
47
- fn format_addr( ip : IpAddr ) -> ~str {
48
- match ip {
49
+ fn format_addr( ip : & IpAddr ) -> ~str {
50
+ match * ip {
49
51
Ipv4 ( addr) => unsafe {
50
52
let result = uv_ip4_name ( & addr) ;
51
53
if result == ~"" {
@@ -82,7 +84,7 @@ enum IpGetAddrErr {
82
84
* a vector of `ip_addr` results, in the case of success, or an error
83
85
* object in the case of failure
84
86
*/
85
- fn get_addr ( ++ node : ~ str , iotask : iotask )
87
+ fn get_addr ( node : & str , iotask : iotask )
86
88
-> result:: Result < ~[ IpAddr ] , IpGetAddrErr > {
87
89
do core:: comm:: listen |output_ch| {
88
90
do str:: as_buf ( node) |node_ptr, len| unsafe {
@@ -131,7 +133,7 @@ mod v4 {
131
133
*
132
134
* * an `ip_addr` of the `ipv4` variant
133
135
*/
134
- fn parse_addr ( ip : ~ str ) -> IpAddr {
136
+ fn parse_addr ( ip : & str ) -> IpAddr {
135
137
match try_parse_addr ( ip) {
136
138
result:: Ok ( addr) => copy ( addr) ,
137
139
result:: Err ( err_data) => fail err_data. err_msg
@@ -151,7 +153,7 @@ mod v4 {
151
153
* ( ( ptr:: addr_of ( self ) ) as * u32 )
152
154
}
153
155
}
154
- fn parse_to_ipv4_rep ( ip : ~ str ) -> result:: Result < Ipv4Rep , ~str > {
156
+ fn parse_to_ipv4_rep ( ip : & str ) -> result:: Result < Ipv4Rep , ~str > {
155
157
let parts = vec:: map ( str:: split_char ( ip, '.' ) , |s| {
156
158
match uint:: from_str ( s) {
157
159
Some ( n) if n <= 255 u => n,
@@ -169,7 +171,7 @@ mod v4 {
169
171
c: parts[ 2 ] as u8 , d: parts[ 3 ] as u8 } )
170
172
}
171
173
}
172
- fn try_parse_addr ( ip : ~ str ) -> result:: Result < IpAddr , ParseAddrErr > {
174
+ fn try_parse_addr ( ip : & str ) -> result:: Result < IpAddr , ParseAddrErr > {
173
175
unsafe {
174
176
let INADDR_NONE = ll:: get_INADDR_NONE ( ) ;
175
177
let ip_rep_result = parse_to_ipv4_rep ( ip) ;
@@ -181,7 +183,7 @@ mod v4 {
181
183
let input_is_inaddr_none =
182
184
result:: get ( ip_rep_result) . as_u32 ( ) == INADDR_NONE ;
183
185
184
- let new_addr = uv_ip4_addr ( ip , 22 ) ;
186
+ let new_addr = uv_ip4_addr ( str :: from_slice ( ip ) , 22 ) ;
185
187
let reformatted_name = uv_ip4_name ( & new_addr) ;
186
188
log ( debug, fmt ! ( "try_parse_addr: input ip: %s reparsed ip: %s" ,
187
189
ip, reformatted_name) ) ;
@@ -217,22 +219,22 @@ mod v6 {
217
219
*
218
220
* * an `ip_addr` of the `ipv6` variant
219
221
*/
220
- fn parse_addr ( ip : ~ str ) -> IpAddr {
222
+ fn parse_addr ( ip : & str ) -> IpAddr {
221
223
match try_parse_addr ( ip) {
222
224
result:: Ok ( addr) => copy ( addr) ,
223
225
result:: Err ( err_data) => fail err_data. err_msg
224
226
}
225
227
}
226
- fn try_parse_addr ( ip : ~ str ) -> result:: Result < IpAddr , ParseAddrErr > {
228
+ fn try_parse_addr ( ip : & str ) -> result:: Result < IpAddr , ParseAddrErr > {
227
229
unsafe {
228
230
// need to figure out how to establish a parse failure..
229
- let new_addr = uv_ip6_addr ( ip , 22 ) ;
231
+ let new_addr = uv_ip6_addr ( str :: from_slice ( ip ) , 22 ) ;
230
232
let reparsed_name = uv_ip6_name ( & new_addr) ;
231
233
log ( debug, fmt ! ( "v6::try_parse_addr ip: '%s' reparsed '%s'" ,
232
234
ip, reparsed_name) ) ;
233
235
// '::' appears to be uv_ip6_name() returns for bogus
234
236
// parses..
235
- if ip != ~ ":: " && reparsed_name == ~":: " {
237
+ if ip != & "::" && reparsed_name == ~":: " {
236
238
result:: Err ( { err_msg: fmt ! ( "failed to parse '%s'" ,
237
239
ip) } )
238
240
}
@@ -311,13 +313,13 @@ mod test {
311
313
#[ test]
312
314
fn test_ip_ipv4_parse_and_format_ip ( ) {
313
315
let localhost_str = ~"127.0 . 0 . 1 ";
314
- assert ( format_addr ( v4:: parse_addr ( localhost_str) )
316
+ assert ( format_addr ( & v4:: parse_addr ( localhost_str) )
315
317
== localhost_str)
316
318
}
317
319
#[ test]
318
320
fn test_ip_ipv6_parse_and_format_ip ( ) {
319
321
let localhost_str = ~":: 1 ";
320
- let format_result = format_addr ( v6:: parse_addr ( localhost_str) ) ;
322
+ let format_result = format_addr ( & v6:: parse_addr ( localhost_str) ) ;
321
323
log ( debug, fmt ! ( "results: expected: '%s' actual: '%s'" ,
322
324
localhost_str, format_result) ) ;
323
325
assert format_result == localhost_str;
@@ -367,7 +369,7 @@ mod test {
367
369
Ipv6 ( _) => ~"IPv6 "
368
370
} ;
369
371
log ( debug, fmt ! ( "test_get_addr: result %s: '%s'" ,
370
- ipv_prefix, format_addr( r) ) ) ;
372
+ ipv_prefix, format_addr( & r) ) ) ;
371
373
}
372
374
// at least one result.. this is going to vary from system
373
375
// to system, based on stuff like the contents of /etc/hosts
0 commit comments