IPAddr has no public method to get the current subnet mask
Both to_s and to_string omit the subnet mask of an IP address. The only way to query it via public methods is to manually parse the output of inspect.
#1 [ruby-core:69448] Updated by bjmllr (Ben Miller) almost 2 years ago
It would be useful to expose @mask_addr. I have done this at times by reopening IPAddr and adding an attr_reader. Then the string form of the mask can be obtained with
#mask_addr is also useful when doing subnetting operations which are beyond the scope of IPAddr.
#2 [ruby-core:74095] Updated by Eregon (Benoit Daloze) about 1 year ago
- Assignee set to knu (Akinori MUSHA)
Assigning this to the official maintainer of ipaddr.
Or should it be assigned to matz?
Could this be decided at the next Developer meeting or sooner?
See https://github.com/ruby/ruby/pull/1269 for the patch.
#3 [ruby-core:74927] Updated by knu (Akinori MUSHA) about 1 year ago
- Status changed from Open to Assigned
Sorry for being inactive.
I've made some comments in the above PR.
I can't recall the exact reason why there's no access to the netmask provided, but one main design concept of IPAddr by the original author (Ume-san) was to allow manipulating IP addresses independent of what family each instance is in, so I'd welcome the PR in that it introduces an address family independent class for returning values.
Except for a few things I mentioned in the PR it looks good to merge, so please toss your feedback to it if you have any opinions. Thank you.