All nodes must support IPv6 now. Allow members to be granted
permissions to IPv6 addresses (currently no IPs are being granted, but
don't allow that feature to bitrot).
extern val your_ip_to_ip : your_ip -> ip;
{{An IP address that you're authorized to use; e.g., for an SSL web host}}
extern val your_ip_to_ip : your_ip -> ip;
{{An IP address that you're authorized to use; e.g., for an SSL web host}}
+extern type your_ipv6;
+extern val your_ipv6_to_ipv6 : your_ipv6 -> ipv6;
+{{An IPv6 address that you're authorized to use; e.g., for an SSL web host}}
+
extern type host;
{{A hostname; that is, (more or less) an alphanumeric string}}
extern type host;
{{A hostname; that is, (more or less) an alphanumeric string}}
extern val ip_of_node : node -> ip;
{{Look up the IP address of a node.}}
extern val ip_of_node : node -> ip;
{{Look up the IP address of a node.}}
+extern val ipv6_of_node : node -> ipv6;
+{{Look up the IPv6 address of a node.}}
+
extern type user;
extern type group;
{{UNIX users and groups}}
extern type user;
extern type group;
{{UNIX users and groups}}
val your_ipss = ref SS.empty
fun your_ips () = !your_ipss
val your_ipss = ref SS.empty
fun your_ips () = !your_ipss
+val your_ipv6ss = ref SS.empty
+fun your_ipv6s () = !your_ipv6ss
+
val world_readable = SS.addList (SS.empty, Config.worldReadable)
val readable_pths = ref world_readable
fun readable_paths () = !readable_pths
val world_readable = SS.addList (SS.empty, Config.worldReadable)
val readable_pths = ref world_readable
fun readable_paths () = !readable_pths
your_pths := your_paths;
readable_pths := SS.union (your_paths, world_readable);
your_ipss := Acl.class {user = getUser (),
your_pths := your_paths;
readable_pths := SS.union (your_paths, world_readable);
your_ipss := Acl.class {user = getUser (),
+ class = "ip"};
+ your_ipv6ss := Acl.class {user = getUser (),
+ class = "ipv6"}
end
fun declareClient () = isClient := true
end
fun declareClient () = isClient := true
val readablePath = checkPath readable_paths
fun yourIp s = !fakePrivs orelse SS.member (your_ips (), s)
val readablePath = checkPath readable_paths
fun yourIp s = !fakePrivs orelse SS.member (your_ips (), s)
+fun yourIpv6 s = !fakePrivs orelse SS.member (your_ipv6s (), s)
fun yourDomainHost s =
!fakePrivs
fun yourDomainHost s =
!fakePrivs
+val _ = Env.type_one "your_ipv6"
+ Env.string
+ yourIpv6
+
val _ = Env.type_one "node"
Env.string
validNode
val _ = Env.type_one "node"
Env.string
validNode
fn [e] => SOME e
| _ => NONE)
fn [e] => SOME e
| _ => NONE)
+val _ = Env.registerFunction ("your_ipv6_to_ipv6",
+ fn [e] => SOME e
+ | _ => NONE)
+
val _ = Env.registerFunction ("dns_node_to_node",
fn [e] => SOME e
| _ => NONE)
val _ = Env.registerFunction ("dns_node_to_node",
fn [e] => SOME e
| _ => NONE)
fn [(EString node, _)] => SOME (EString (nodeIp node), dl)
| _ => NONE)
fn [(EString node, _)] => SOME (EString (nodeIp node), dl)
| _ => NONE)
+val _ = Env.registerFunction ("ipv6_of_node",
+ fn [(EString node, _)] => SOME (EString (nodeIpv6 node), dl)
+ | _ => NONE)
+
val master = fn (EApp ((EVar "externalMaster", _), e), _) => Option.map ExternalMaster (ip e)
| (EApp ((EVar "internalMaster", _), e), _) => Option.map InternalMaster (Env.string e)
| _ => NONE
val master = fn (EApp ((EVar "externalMaster", _), e), _) => Option.map ExternalMaster (ip e)
| (EApp ((EVar "internalMaster", _), e), _) => Option.map InternalMaster (Env.string e)
| _ => NONE