Method: Subnets::Net4.random
- Defined in:
- ext/subnets/ext.c
.random(rng = Random.new) ⇒ Net4
Returns a random Net4 address.
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
# File 'ext/subnets/ext.c', line 209
VALUE
method_net4_random(int argc, VALUE *argv, VALUE class) {
net4_t net;
VALUE rng, rand;
rb_scan_args(argc, argv, "01", &rng);
if (Qnil == rng) {
rng = rb_funcall(rb_cRandom, rb_intern("new"), 0);
}
rand = rb_intern("rand");
net.address = FIX2INT(rb_funcall(rng, rand, 1, INT2FIX(0xffff+1)));
net.address |= FIX2INT(rb_funcall(rng, rand, 1, INT2FIX(0xffff+1))) << 16;
net.prefixlen = FIX2INT(rb_funcall(rng, rb_intern("rand"), 1, INT2FIX(32+1)));
net.mask = mk_mask4(net.prefixlen);
return net4_new(class, net);
}
|