CREATE DEFINER=`admin`@`%` FUNCTION `ip_within`(ip INT UNSIGNED, net INT UNSIGNED, mask TINYINT) RETURNS tinyint(1) BEGIN RETURN ip BETWEEN net AND net + POWER(2,32-mask) -1 ; END CREATE FUNCTION `security`.`is_production` (ip INT UNSIGNED) RETURNS TINYINT(1) BEGIN RETURN ( ip_within(ip, INET_ATON('10.0.0.0'), 8) OR ip_within(ip, INET_ATON('172.16.0.0'), 12) OR ip_within(ip, INET_ATON('192.168.0.0'), 16) ) END