@lifo-sh/core 0.4.6 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/README.md +7 -3
  2. package/dist/{awk-BFrGImnt.js → awk-Bhywv7pU.js} +1 -1
  3. package/dist/base64-ncdb27yL.js +72 -0
  4. package/dist/{basename-MGz8cBxd.js → basename-D-_r1VN_.js} +1 -1
  5. package/dist/browser-Bymgnrli.js +35 -0
  6. package/dist/{cat-BnEyWWFr.js → cat-DSe6FHma.js} +1 -1
  7. package/dist/{chmod-CdrI3hZV.js → chmod-BZIlNR2-.js} +1 -1
  8. package/dist/{chown-7yY3iC6J.js → chown-BAOEOuMn.js} +1 -1
  9. package/dist/commands/net/curl.d.ts +2 -2
  10. package/dist/commands/net/curl.d.ts.map +1 -1
  11. package/dist/commands/net/forward.d.ts +14 -0
  12. package/dist/commands/net/forward.d.ts.map +1 -0
  13. package/dist/commands/net/host.d.ts +14 -0
  14. package/dist/commands/net/host.d.ts.map +1 -0
  15. package/dist/commands/net/ifconfig.d.ts +8 -0
  16. package/dist/commands/net/ifconfig.d.ts.map +1 -0
  17. package/dist/commands/net/ip.d.ts +14 -0
  18. package/dist/commands/net/ip.d.ts.map +1 -0
  19. package/dist/commands/net/netstat.d.ts +8 -0
  20. package/dist/commands/net/netstat.d.ts.map +1 -0
  21. package/dist/commands/net/ports.d.ts +8 -0
  22. package/dist/commands/net/ports.d.ts.map +1 -0
  23. package/dist/commands/net/route.d.ts +8 -0
  24. package/dist/commands/net/route.d.ts.map +1 -0
  25. package/dist/commands/net/test-registry.d.ts +8 -0
  26. package/dist/commands/net/test-registry.d.ts.map +1 -0
  27. package/dist/commands/net/tunnel-v2.d.ts +4 -0
  28. package/dist/commands/net/tunnel-v2.d.ts.map +1 -0
  29. package/dist/commands/net/tunnel.d.ts +6 -0
  30. package/dist/commands/net/tunnel.d.ts.map +1 -0
  31. package/dist/commands/registry.d.ts +1 -0
  32. package/dist/commands/registry.d.ts.map +1 -1
  33. package/dist/commands/system/fastfetch.d.ts +4 -0
  34. package/dist/commands/system/fastfetch.d.ts.map +1 -0
  35. package/dist/commands/system/kill.d.ts +2 -2
  36. package/dist/commands/system/kill.d.ts.map +1 -1
  37. package/dist/commands/system/lifo.d.ts +17 -0
  38. package/dist/commands/system/lifo.d.ts.map +1 -1
  39. package/dist/commands/system/logout.d.ts +5 -0
  40. package/dist/commands/system/logout.d.ts.map +1 -0
  41. package/dist/commands/system/man.d.ts.map +1 -1
  42. package/dist/commands/system/newtab.d.ts +8 -0
  43. package/dist/commands/system/newtab.d.ts.map +1 -0
  44. package/dist/commands/system/node.d.ts +2 -2
  45. package/dist/commands/system/node.d.ts.map +1 -1
  46. package/dist/commands/system/npm.d.ts +20 -7
  47. package/dist/commands/system/npm.d.ts.map +1 -1
  48. package/dist/commands/system/ps.d.ts +3 -2
  49. package/dist/commands/system/ps.d.ts.map +1 -1
  50. package/dist/commands/system/sha256sum.d.ts +4 -0
  51. package/dist/commands/system/sha256sum.d.ts.map +1 -0
  52. package/dist/commands/system/sl.d.ts +4 -0
  53. package/dist/commands/system/sl.d.ts.map +1 -0
  54. package/dist/commands/system/systemctl.d.ts +4 -0
  55. package/dist/commands/system/systemctl.d.ts.map +1 -0
  56. package/dist/commands/system/top.d.ts +2 -2
  57. package/dist/commands/system/top.d.ts.map +1 -1
  58. package/dist/commands/system/whoami.d.ts.map +1 -1
  59. package/dist/commands/text/base64.d.ts +4 -0
  60. package/dist/commands/text/base64.d.ts.map +1 -0
  61. package/dist/commands/text/less.d.ts +4 -0
  62. package/dist/commands/text/less.d.ts.map +1 -0
  63. package/dist/commands/text/nano.d.ts +4 -0
  64. package/dist/commands/text/nano.d.ts.map +1 -0
  65. package/dist/commands/text/seq.d.ts +4 -0
  66. package/dist/commands/text/seq.d.ts.map +1 -0
  67. package/dist/commands/text/strings.d.ts +4 -0
  68. package/dist/commands/text/strings.d.ts.map +1 -0
  69. package/dist/commands/text/tac.d.ts +4 -0
  70. package/dist/commands/text/tac.d.ts.map +1 -0
  71. package/dist/commands/types.d.ts +1 -0
  72. package/dist/commands/types.d.ts.map +1 -1
  73. package/dist/{cp-7dOXCu3Q.js → cp-DOXzF2_m.js} +1 -1
  74. package/dist/{cut-vn4vxL9L.js → cut-B4rQvMRc.js} +1 -1
  75. package/dist/{diff-DnKPewP-.js → diff-BndHU0Ne.js} +1 -1
  76. package/dist/{dirname-B3ciBZhS.js → dirname-wtPE8QZ6.js} +1 -1
  77. package/dist/{du-i2qiYYnL.js → du-BLkl3BkN.js} +1 -1
  78. package/dist/fastfetch-aPM9Z3ym.js +310 -0
  79. package/dist/{file-Dd6iLk05.js → file-DfmI5Gyk.js} +1 -1
  80. package/dist/{find-Cz4GdaPT.js → find-Wdkys9OU.js} +1 -1
  81. package/dist/{grep-DYSAPbxr.js → grep-xmx3I05f.js} +1 -1
  82. package/dist/{gunzip-BHAbNGHO.js → gunzip-Dbr2fm5t.js} +1 -1
  83. package/dist/{gzip-JLrrHn6u.js → gzip-D1GwSnNe.js} +1 -1
  84. package/dist/{head-bFamSv7p.js → head-DUXuKw3m.js} +1 -1
  85. package/dist/index-Djm2onjx.js +13915 -0
  86. package/dist/index.d.ts +28 -2
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +90 -65
  89. package/dist/kernel/ServiceManager.d.ts +51 -0
  90. package/dist/kernel/ServiceManager.d.ts.map +1 -0
  91. package/dist/kernel/index.d.ts +11 -0
  92. package/dist/kernel/index.d.ts.map +1 -1
  93. package/dist/kernel/network/Bridge.d.ts +110 -0
  94. package/dist/kernel/network/Bridge.d.ts.map +1 -0
  95. package/dist/kernel/network/DNSResolver.d.ts +55 -0
  96. package/dist/kernel/network/DNSResolver.d.ts.map +1 -0
  97. package/dist/kernel/network/NetworkInterface.d.ts +83 -0
  98. package/dist/kernel/network/NetworkInterface.d.ts.map +1 -0
  99. package/dist/kernel/network/NetworkNamespace.d.ts +98 -0
  100. package/dist/kernel/network/NetworkNamespace.d.ts.map +1 -0
  101. package/dist/kernel/network/NetworkStack.d.ts +178 -0
  102. package/dist/kernel/network/NetworkStack.d.ts.map +1 -0
  103. package/dist/kernel/network/NetworkStack.example.d.ts +8 -0
  104. package/dist/kernel/network/NetworkStack.example.d.ts.map +1 -0
  105. package/dist/kernel/network/NetworkStack.test.d.ts +2 -0
  106. package/dist/kernel/network/NetworkStack.test.d.ts.map +1 -0
  107. package/dist/kernel/network/PortBridge.d.ts +49 -0
  108. package/dist/kernel/network/PortBridge.d.ts.map +1 -0
  109. package/dist/kernel/network/RoutingTable.d.ts +55 -0
  110. package/dist/kernel/network/RoutingTable.d.ts.map +1 -0
  111. package/dist/kernel/network/Socket.d.ts +65 -0
  112. package/dist/kernel/network/Socket.d.ts.map +1 -0
  113. package/dist/kernel/network/index.d.ts +11 -0
  114. package/dist/kernel/network/index.d.ts.map +1 -0
  115. package/dist/kernel/network/tunnel/BaseTunnel.d.ts +55 -0
  116. package/dist/kernel/network/tunnel/BaseTunnel.d.ts.map +1 -0
  117. package/dist/kernel/network/tunnel/VETHPair.d.ts +71 -0
  118. package/dist/kernel/network/tunnel/VETHPair.d.ts.map +1 -0
  119. package/dist/kernel/network/tunnel/WebSocketTunnel.d.ts +89 -0
  120. package/dist/kernel/network/tunnel/WebSocketTunnel.d.ts.map +1 -0
  121. package/dist/kernel/network/types.d.ts +159 -0
  122. package/dist/kernel/network/types.d.ts.map +1 -0
  123. package/dist/kernel/storage/ContentStore.d.ts +3 -1
  124. package/dist/kernel/storage/ContentStore.d.ts.map +1 -1
  125. package/dist/kernel/unit-parser.d.ts +22 -0
  126. package/dist/kernel/unit-parser.d.ts.map +1 -0
  127. package/dist/less-VW-Lb-t9.js +230 -0
  128. package/dist/{ls-BSsn2qVd.js → ls-DjuSFYCA.js} +1 -1
  129. package/dist/{man-CJ5pI0_W.js → man-Dg26tZ-a.js} +19 -6
  130. package/dist/{mkdir-CF_ugDtu.js → mkdir-qMgrbMfK.js} +1 -1
  131. package/dist/{mktemp-CaEiJi87.js → mktemp-BNrdUgqA.js} +1 -1
  132. package/dist/{mv-BSS_QQM-.js → mv-DxovuvmA.js} +1 -1
  133. package/dist/nano-CVa6vpFX.js +304 -0
  134. package/dist/{nl-D30ka89P.js → nl-E4qmf3dZ.js} +1 -1
  135. package/dist/node-compat/crypto.d.ts +8 -1
  136. package/dist/node-compat/crypto.d.ts.map +1 -1
  137. package/dist/node-compat/dns.d.ts +117 -0
  138. package/dist/node-compat/dns.d.ts.map +1 -0
  139. package/dist/node-compat/esbuild.d.ts +10 -0
  140. package/dist/node-compat/esbuild.d.ts.map +1 -0
  141. package/dist/node-compat/fs.d.ts +25 -5
  142. package/dist/node-compat/fs.d.ts.map +1 -1
  143. package/dist/node-compat/http.d.ts +54 -9
  144. package/dist/node-compat/http.d.ts.map +1 -1
  145. package/dist/node-compat/index.d.ts.map +1 -1
  146. package/dist/node-compat/module.d.ts +55 -0
  147. package/dist/node-compat/module.d.ts.map +1 -0
  148. package/dist/node-compat/path.d.ts +28 -0
  149. package/dist/node-compat/path.d.ts.map +1 -1
  150. package/dist/node-compat/process.d.ts +67 -2
  151. package/dist/node-compat/process.d.ts.map +1 -1
  152. package/dist/node-compat/readline.d.ts +79 -0
  153. package/dist/node-compat/readline.d.ts.map +1 -0
  154. package/dist/node-compat/rimraf.d.ts +23 -0
  155. package/dist/node-compat/rimraf.d.ts.map +1 -0
  156. package/dist/node-compat/tty.d.ts +32 -0
  157. package/dist/node-compat/tty.d.ts.map +1 -0
  158. package/dist/node-compat/url.d.ts +4 -0
  159. package/dist/node-compat/url.d.ts.map +1 -1
  160. package/dist/node-compat/util.d.ts +21 -1
  161. package/dist/node-compat/util.d.ts.map +1 -1
  162. package/dist/{realpath-BWqrTa-J.js → realpath-BaYc6QSr.js} +1 -1
  163. package/dist/{rev-Cfja5xbl.js → rev-CtqOEUEH.js} +1 -1
  164. package/dist/{rm-DUR35EZn.js → rm-DtLSFhWn.js} +1 -1
  165. package/dist/{rmdir-DXjx17-Z.js → rmdir-k65U0Fef.js} +1 -1
  166. package/dist/sandbox/Sandbox.d.ts.map +1 -1
  167. package/dist/sandbox/types.d.ts +2 -2
  168. package/dist/sandbox/types.d.ts.map +1 -1
  169. package/dist/{sed-YKJ5wcuu.js → sed-BpypU_CO.js} +1 -1
  170. package/dist/seq-B01YKIbO.js +37 -0
  171. package/dist/sha256sum-x-mlDY9n.js +64 -0
  172. package/dist/shell/ProcessRegistry.d.ts +144 -0
  173. package/dist/shell/ProcessRegistry.d.ts.map +1 -0
  174. package/dist/shell/ProcessRegistry.example.d.ts +8 -0
  175. package/dist/shell/ProcessRegistry.example.d.ts.map +1 -0
  176. package/dist/shell/ProcessRegistry.test.d.ts +2 -0
  177. package/dist/shell/ProcessRegistry.test.d.ts.map +1 -0
  178. package/dist/shell/Shell.d.ts +10 -2
  179. package/dist/shell/Shell.d.ts.map +1 -1
  180. package/dist/shell/interpreter.d.ts +4 -0
  181. package/dist/shell/interpreter.d.ts.map +1 -1
  182. package/dist/shell/terminal-stdin.d.ts +4 -0
  183. package/dist/shell/terminal-stdin.d.ts.map +1 -1
  184. package/dist/sl-Dv4iPBN6.js +138 -0
  185. package/dist/{sort-C2sQ841N.js → sort-C1n7kWmJ.js} +1 -1
  186. package/dist/{stat-gLLpq3JZ.js → stat-Co_5pgto.js} +1 -1
  187. package/dist/strings-tFgYFAvp.js +42 -0
  188. package/dist/tac-BQvVvnoM.js +31 -0
  189. package/dist/{tail-FnC8M40k.js → tail-CLWVwfZD.js} +1 -1
  190. package/dist/{tar-tfiT1iFt.js → tar-wo7UUSK5.js} +1 -1
  191. package/dist/{tee-CoymtuKa.js → tee-DlyeS1Yd.js} +1 -1
  192. package/dist/{touch-C4pyouV6.js → touch-DVzPgqSy.js} +1 -1
  193. package/dist/{tree-DfPczgli.js → tree-DHBQhXD7.js} +1 -1
  194. package/dist/{uniq-Dhsoj7Lk.js → uniq-CmmP6k_t.js} +1 -1
  195. package/dist/{unzip-CqIKZ8NK.js → unzip-BIOvH2jT.js} +1 -1
  196. package/dist/{wc-DBPO6xRf.js → wc-DfI1Q3lo.js} +1 -1
  197. package/dist/{wget-CYImxeOz.js → wget-Dd25MxcO.js} +1 -1
  198. package/dist/whoami-C_q-p-Vo.js +25 -0
  199. package/dist/{zip-TPdwPkrA.js → zip-Cc3IoNSB.js} +1 -1
  200. package/package.json +6 -3
  201. package/dist/index-BVIfyOAv.js +0 -8578
  202. package/dist/whoami-B1237V5e.js +0 -8
@@ -0,0 +1,98 @@
1
+ import { NetworkNamespace as INetworkNamespace, RouteEntry, Socket } from './types.js';
2
+ import { NetworkInterface } from './NetworkInterface.js';
3
+ /**
4
+ * Network namespace implementation
5
+ * Provides network isolation like Linux network namespaces
6
+ */
7
+ export declare class NetworkNamespace implements INetworkNamespace {
8
+ id: string;
9
+ name: string;
10
+ interfaces: Map<string, NetworkInterface>;
11
+ routes: RouteEntry[];
12
+ sockets: Map<number, Socket>;
13
+ arpTable: Map<string, string>;
14
+ private nextFd;
15
+ constructor(id: string, name: string);
16
+ /**
17
+ * Add interface to namespace
18
+ */
19
+ addInterface(iface: NetworkInterface): void;
20
+ /**
21
+ * Remove interface from namespace
22
+ */
23
+ removeInterface(name: string): boolean;
24
+ /**
25
+ * Get interface by name
26
+ */
27
+ getInterface(name: string): NetworkInterface | undefined;
28
+ /**
29
+ * Get all interfaces
30
+ */
31
+ getAllInterfaces(): NetworkInterface[];
32
+ /**
33
+ * Add route
34
+ */
35
+ addRoute(route: RouteEntry): void;
36
+ /**
37
+ * Remove route
38
+ */
39
+ removeRoute(destination: string, iface: string): boolean;
40
+ /**
41
+ * Get all routes
42
+ */
43
+ getRoutes(): RouteEntry[];
44
+ /**
45
+ * Add socket to namespace
46
+ */
47
+ addSocket(socket: Socket): void;
48
+ /**
49
+ * Remove socket from namespace
50
+ */
51
+ removeSocket(fd: number): boolean;
52
+ /**
53
+ * Get socket by file descriptor
54
+ */
55
+ getSocket(fd: number): Socket | undefined;
56
+ /**
57
+ * Get all sockets
58
+ */
59
+ getAllSockets(): Socket[];
60
+ /**
61
+ * Allocate file descriptor for new socket
62
+ */
63
+ allocateFd(): number;
64
+ /**
65
+ * Add ARP entry (IP -> MAC mapping)
66
+ */
67
+ addArpEntry(ip: string, mac: string): void;
68
+ /**
69
+ * Remove ARP entry
70
+ */
71
+ removeArpEntry(ip: string): boolean;
72
+ /**
73
+ * Lookup MAC address for IP
74
+ */
75
+ arpLookup(ip: string): string | undefined;
76
+ /**
77
+ * Get all ARP entries
78
+ */
79
+ getArpTable(): Map<string, string>;
80
+ /**
81
+ * Clear all ARP entries
82
+ */
83
+ clearArpTable(): void;
84
+ /**
85
+ * Clone namespace (for creating new network namespace)
86
+ */
87
+ clone(newId: string, newName: string): NetworkNamespace;
88
+ /**
89
+ * Get namespace statistics
90
+ */
91
+ getStats(): {
92
+ interfaces: number;
93
+ routes: number;
94
+ sockets: number;
95
+ arpEntries: number;
96
+ };
97
+ }
98
+ //# sourceMappingURL=NetworkNamespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkNamespace.d.ts","sourceRoot":"","sources":["../../../src/kernel/network/NetworkNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAK;gBAEP,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IASpC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAI3C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIxD;;OAEG;IACH,gBAAgB,IAAI,gBAAgB,EAAE;IAItC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMjC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAQxD;;OAEG;IACH,SAAS,IAAI,UAAU,EAAE;IAIzB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzC;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzC;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIlC;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAWvD;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB;CAQF"}
@@ -0,0 +1,178 @@
1
+ import { NetworkInterface } from './NetworkInterface.js';
2
+ import { NetworkNamespace } from './NetworkNamespace.js';
3
+ import { DNSResolver } from './DNSResolver.js';
4
+ import { Socket } from './Socket.js';
5
+ import { IPAddress, SocketType, SocketAddress, Packet, RouteEntry, NetworkTunnel } from './types.js';
6
+ /**
7
+ * Virtual network stack
8
+ * Provides Linux-like networking with interfaces, routing, sockets, DNS, and tunneling
9
+ */
10
+ export declare class NetworkStack {
11
+ private namespaces;
12
+ private routingTable;
13
+ private dnsResolver;
14
+ private portBindings;
15
+ private nextNamespaceId;
16
+ private tunnels;
17
+ private vethPairs;
18
+ private bridges;
19
+ private nextTunnelId;
20
+ constructor();
21
+ /**
22
+ * Initialize default namespace with loopback interface
23
+ */
24
+ private initDefaultNamespace;
25
+ /**
26
+ * Create new network namespace
27
+ */
28
+ createNamespace(name: string): string;
29
+ /**
30
+ * Delete network namespace
31
+ */
32
+ deleteNamespace(id: string): boolean;
33
+ /**
34
+ * Get namespace by ID
35
+ */
36
+ getNamespace(id: string): NetworkNamespace | undefined;
37
+ /**
38
+ * Get all namespaces
39
+ */
40
+ getAllNamespaces(): NetworkNamespace[];
41
+ /**
42
+ * Create network interface
43
+ */
44
+ createInterface(name: string, type: 'loopback' | 'ethernet' | 'tunnel', namespace?: string, options?: {
45
+ mtu?: number;
46
+ mac?: string;
47
+ addresses?: IPAddress[];
48
+ }): NetworkInterface;
49
+ /**
50
+ * Delete network interface
51
+ */
52
+ deleteInterface(name: string, namespace?: string): boolean;
53
+ /**
54
+ * Get interface
55
+ */
56
+ getInterface(name: string, namespace?: string): NetworkInterface | undefined;
57
+ /**
58
+ * Get all interfaces in namespace
59
+ */
60
+ getAllInterfaces(namespace?: string): NetworkInterface[];
61
+ /**
62
+ * Add route
63
+ */
64
+ addRoute(route: RouteEntry): void;
65
+ /**
66
+ * Remove route
67
+ */
68
+ removeRoute(destination: string, iface: string, namespace?: string): boolean;
69
+ /**
70
+ * Get routes
71
+ */
72
+ getRoutes(namespace?: string): RouteEntry[];
73
+ /**
74
+ * Lookup route for destination
75
+ */
76
+ lookupRoute(ip: string, namespace?: string): RouteEntry | null;
77
+ /**
78
+ * Create socket
79
+ */
80
+ createSocket(type: SocketType, namespace?: string): Socket;
81
+ /**
82
+ * Bind socket to port
83
+ */
84
+ bindSocket(socket: Socket, address: SocketAddress, handler?: (socket: Socket) => void | Promise<void>): void;
85
+ /**
86
+ * Unbind socket
87
+ */
88
+ private unbindSocket;
89
+ /**
90
+ * Get port binding key
91
+ */
92
+ private getBindingKey;
93
+ /**
94
+ * Send packet
95
+ */
96
+ sendPacket(packet: Packet, namespace?: string): Promise<void>;
97
+ /**
98
+ * Route packet to listening socket
99
+ */
100
+ private routeToSocket;
101
+ /**
102
+ * Get DNS resolver
103
+ */
104
+ getDNS(): DNSResolver;
105
+ /**
106
+ * Resolve hostname
107
+ */
108
+ resolveHostname(hostname: string): Promise<string>;
109
+ /**
110
+ * Get all sockets in namespace
111
+ */
112
+ getAllSockets(namespace?: string): Socket[];
113
+ /**
114
+ * Get formatted routing table
115
+ */
116
+ getRoutingTableString(namespace?: string): string;
117
+ /**
118
+ * Add tunnel to network stack
119
+ */
120
+ addTunnel(name: string, tunnel: NetworkTunnel): void;
121
+ /**
122
+ * Remove tunnel from network stack
123
+ */
124
+ removeTunnel(name: string): Promise<boolean>;
125
+ /**
126
+ * Get tunnel by name
127
+ */
128
+ getTunnel(name: string): NetworkTunnel | undefined;
129
+ /**
130
+ * Get all tunnels
131
+ */
132
+ getAllTunnels(): NetworkTunnel[];
133
+ /**
134
+ * Get tunnels by namespace
135
+ */
136
+ getTunnelsByNamespace(namespace: string): NetworkTunnel[];
137
+ /**
138
+ * Add VETH pair
139
+ */
140
+ addVETHPair(id: string, vethPair: any): void;
141
+ /**
142
+ * Remove VETH pair
143
+ */
144
+ removeVETHPair(id: string): Promise<boolean>;
145
+ /**
146
+ * Get VETH pair by ID or interface name
147
+ */
148
+ getVETHPair(idOrName: string): any | undefined;
149
+ /**
150
+ * Get all VETH pairs
151
+ */
152
+ getAllVETHPairs(): any[];
153
+ /**
154
+ * Generate next tunnel ID
155
+ */
156
+ getNextTunnelId(): string;
157
+ /**
158
+ * Add bridge to network stack
159
+ */
160
+ addBridge(name: string, bridge: any): void;
161
+ /**
162
+ * Remove bridge from network stack
163
+ */
164
+ removeBridge(name: string): Promise<boolean>;
165
+ /**
166
+ * Get bridge by name
167
+ */
168
+ getBridge(name: string): any | undefined;
169
+ /**
170
+ * Get all bridges
171
+ */
172
+ getAllBridges(): any[];
173
+ /**
174
+ * Get bridges by namespace
175
+ */
176
+ getBridgesByNamespace(namespace: string): any[];
177
+ }
178
+ //# sourceMappingURL=NetworkStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkStack.d.ts","sourceRoot":"","sources":["../../../src/kernel/network/NetworkStack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * NetworkStack Usage Examples
3
+ *
4
+ * This file demonstrates how to use the virtual network stack
5
+ * for Linux-like networking in lifo.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=NetworkStack.example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkStack.example.d.ts","sourceRoot":"","sources":["../../../src/kernel/network/NetworkStack.example.ts"],"names":[],"mappings":"AACA;;;;;GAKG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NetworkStack.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkStack.test.d.ts","sourceRoot":"","sources":["../../../src/kernel/network/NetworkStack.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ import { VirtualRequestHandler } from '../index.js';
2
+ /**
3
+ * Port Bridge - Bridges virtual ports to real host network
4
+ * Allows accessing virtual HTTP servers from the host machine
5
+ */
6
+ export declare class PortBridge {
7
+ private portRegistry;
8
+ private forwardedPorts;
9
+ constructor(portRegistry: Map<number, VirtualRequestHandler>);
10
+ /**
11
+ * Forward a virtual port to the real host network
12
+ * Returns a URL that can be accessed from the host browser
13
+ */
14
+ forward(virtualPort: number): string;
15
+ /**
16
+ * Stop forwarding a port
17
+ */
18
+ unforward(virtualPort: number): boolean;
19
+ /**
20
+ * Handle a real HTTP request and forward to virtual port
21
+ */
22
+ handleRequest(realPort: number, method: string, path: string, headers: Record<string, string>, body: string): Promise<{
23
+ statusCode: number;
24
+ headers: Record<string, string>;
25
+ body: string;
26
+ }>;
27
+ /**
28
+ * Get all forwarded ports
29
+ */
30
+ getForwardedPorts(): Array<{
31
+ virtual: number;
32
+ real: number;
33
+ }>;
34
+ /**
35
+ * Create a simple browser-accessible proxy endpoint
36
+ * Returns HTML with a link to access the virtual server
37
+ */
38
+ createAccessPage(virtualPort: number): string;
39
+ /**
40
+ * Find an available real port number
41
+ */
42
+ private findAvailablePort;
43
+ /**
44
+ * Create a simple in-browser proxy using fetch
45
+ * This allows accessing virtual servers via URLs like /proxy/3000/
46
+ */
47
+ installBrowserProxy(): void;
48
+ }
49
+ //# sourceMappingURL=PortBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortBridge.d.ts","sourceRoot":"","sources":["../../../src/kernel/network/PortBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAmC,MAAM,aAAa,CAAC;AAE1F;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,cAAc,CAA6B;gBAEvC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAI5D;;;OAGG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAUpC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAsDjF;;OAEG;IACH,iBAAiB,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAO7D;;;OAGG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAsD7C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;OAGG;IACH,mBAAmB,IAAI,IAAI;CAK5B"}
@@ -0,0 +1,55 @@
1
+ import { RouteEntry } from './types.js';
2
+ /**
3
+ * Routing table for IP packet routing
4
+ * Implements longest prefix matching
5
+ */
6
+ export declare class RoutingTable {
7
+ private routes;
8
+ /**
9
+ * Add route to table
10
+ */
11
+ addRoute(route: RouteEntry): void;
12
+ /**
13
+ * Remove route from table
14
+ */
15
+ removeRoute(destination: string, iface: string, namespace: string): boolean;
16
+ /**
17
+ * Lookup route for destination IP
18
+ * Uses longest prefix matching
19
+ */
20
+ lookup(ip: string, namespace: string): RouteEntry | null;
21
+ /**
22
+ * Get all routes for namespace
23
+ */
24
+ getRoutes(namespace?: string): RouteEntry[];
25
+ /**
26
+ * Clear all routes
27
+ */
28
+ clear(namespace?: string): void;
29
+ /**
30
+ * Check if IP matches route destination
31
+ * Returns prefix length if match, null otherwise
32
+ */
33
+ private matchesRoute;
34
+ /**
35
+ * Convert IPv4 address to bit array
36
+ */
37
+ private ipToBits;
38
+ /**
39
+ * Sort routes by prefix length (longest first) then metric
40
+ */
41
+ private sortRoutes;
42
+ /**
43
+ * Get prefix length from CIDR notation
44
+ */
45
+ private getPrefixLength;
46
+ /**
47
+ * Format routing table for display
48
+ */
49
+ toString(namespace?: string): string;
50
+ /**
51
+ * Convert CIDR to netmask
52
+ */
53
+ private cidrToNetmask;
54
+ }
55
+ //# sourceMappingURL=RoutingTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoutingTable.d.ts","sourceRoot":"","sources":["../../../src/kernel/network/RoutingTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoB;IAElC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAejC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAa3E;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAkBxD;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAO3C;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;OAGG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAsBhB;;OAEG;IACH,OAAO,CAAC,UAAU;IAalB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAuBpC;;OAEG;IACH,OAAO,CAAC,aAAa;CAYtB"}
@@ -0,0 +1,65 @@
1
+ import { Socket as ISocket, SocketType, SocketState, SocketAddress, Packet } from './types.js';
2
+ /**
3
+ * Virtual socket implementation
4
+ * Mimics POSIX socket API
5
+ */
6
+ export declare class Socket implements ISocket {
7
+ fd: number;
8
+ type: SocketType;
9
+ state: SocketState;
10
+ localAddress?: SocketAddress;
11
+ remoteAddress?: SocketAddress;
12
+ namespace: string;
13
+ private receiveQueue;
14
+ private acceptQueue;
15
+ private backlog;
16
+ private receiveWaiters;
17
+ private acceptWaiters;
18
+ private closeCallback?;
19
+ constructor(fd: number, type: SocketType, namespace: string, closeCallback?: () => void);
20
+ /**
21
+ * Bind socket to address
22
+ */
23
+ bind(address: SocketAddress): void;
24
+ /**
25
+ * Connect to remote address
26
+ */
27
+ connect(address: SocketAddress): Promise<void>;
28
+ /**
29
+ * Listen for connections
30
+ */
31
+ listen(backlog?: number): void;
32
+ /**
33
+ * Accept incoming connection
34
+ */
35
+ accept(): Promise<Socket>;
36
+ /**
37
+ * Send data through socket
38
+ */
39
+ send(data: Uint8Array): Promise<number>;
40
+ /**
41
+ * Receive data from socket
42
+ */
43
+ recv(maxBytes: number): Promise<Uint8Array>;
44
+ /**
45
+ * Close socket
46
+ */
47
+ close(): void;
48
+ /**
49
+ * Deliver packet to socket (called by NetworkStack)
50
+ */
51
+ deliverPacket(packet: Packet): void;
52
+ /**
53
+ * Allocate ephemeral port (49152-65535)
54
+ */
55
+ private allocateEphemeralPort;
56
+ /**
57
+ * Allocate ephemeral file descriptor
58
+ */
59
+ private allocateEphemeralFd;
60
+ /**
61
+ * Get socket info string (for netstat)
62
+ */
63
+ toString(): string;
64
+ }
65
+ //# sourceMappingURL=Socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Socket.d.ts","sourceRoot":"","sources":["../../../src/kernel/network/Socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,IAAI,OAAO,EACjB,UAAU,EACV,WAAW,EACX,aAAa,EACb,MAAM,EACP,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,MAAO,YAAW,OAAO;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,aAAa,CAAC,CAAa;gBAGjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,IAAI;IAS5B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQlC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBpD;;OAEG;IACH,MAAM,CAAC,OAAO,SAAM,GAAG,IAAI;IAa3B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAiB/B;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAc7C;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBjD;;OAEG;IACH,KAAK,IAAI,IAAI;IA2Bb;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA+BnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,QAAQ,IAAI,MAAM;CAYnB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Network stack exports
3
+ */
4
+ export { NetworkStack } from './NetworkStack.js';
5
+ export { NetworkInterface } from './NetworkInterface.js';
6
+ export { NetworkNamespace } from './NetworkNamespace.js';
7
+ export { RoutingTable } from './RoutingTable.js';
8
+ export { DNSResolver } from './DNSResolver.js';
9
+ export { Socket } from './Socket.js';
10
+ export type { IPAddress, InterfaceState, InterfaceStats, NetworkInterface as INetworkInterface, RouteEntry, SocketType, SocketState, SocketAddress, Socket as ISocket, Packet, DNSRecordType, DNSRecord, NetworkNamespace as INetworkNamespace, TunnelType, NetworkTunnel, PortBinding, } from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel/network/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,YAAY,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,IAAI,iBAAiB,EACrC,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,MAAM,IAAI,OAAO,EACjB,MAAM,EACN,aAAa,EACb,SAAS,EACT,gBAAgB,IAAI,iBAAiB,EACrC,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,YAAY,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { NetworkTunnel, Packet, TunnelType } from '../types.js';
2
+ import { NetworkInterface } from '../NetworkInterface.js';
3
+ import { NetworkStack } from '../NetworkStack.js';
4
+ /**
5
+ * Base class for all tunnel implementations
6
+ * Provides common functionality for tunnel management
7
+ */
8
+ export declare abstract class BaseTunnel implements Omit<NetworkTunnel, 'interface'> {
9
+ id: string;
10
+ abstract type: TunnelType;
11
+ state: 'up' | 'down';
12
+ interface: NetworkInterface;
13
+ config: Record<string, unknown>;
14
+ protected networkStack: NetworkStack;
15
+ protected namespace: string;
16
+ protected mtu: number;
17
+ constructor(id: string, networkStack: NetworkStack, namespace?: string, mtu?: number);
18
+ /**
19
+ * Get tunnel interface name prefix (tun, gre, etc.)
20
+ */
21
+ protected abstract getTunnelPrefix(): string;
22
+ /**
23
+ * Bring tunnel up
24
+ */
25
+ up(): Promise<void>;
26
+ /**
27
+ * Bring tunnel down
28
+ */
29
+ down(): Promise<void>;
30
+ /**
31
+ * Setup routing for tunnel (override if needed)
32
+ */
33
+ protected setupRouting(): Promise<void>;
34
+ /**
35
+ * Teardown routing for tunnel (override if needed)
36
+ */
37
+ protected teardownRouting(): Promise<void>;
38
+ /**
39
+ * Send packet through tunnel (must be implemented by subclass)
40
+ */
41
+ abstract send(packet: Packet): Promise<void>;
42
+ /**
43
+ * Receive packet from tunnel (must be implemented by subclass)
44
+ */
45
+ abstract recv(): Promise<Packet>;
46
+ /**
47
+ * Update tunnel statistics
48
+ */
49
+ protected updateStats(bytes: number, direction: 'tx' | 'rx', error?: boolean): void;
50
+ /**
51
+ * Get tunnel status string
52
+ */
53
+ toString(): string;
54
+ }
55
+ //# sourceMappingURL=BaseTunnel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTunnel.d.ts","sourceRoot":"","sources":["../../../../src/kernel/network/tunnel/BaseTunnel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;GAGG;AACH,8BAAsB,UAAW,YAAW,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,KAAK,EAAE,IAAI,GAAG,MAAM,CAAU;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;gBAGpB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,SAAY,EACrB,GAAG,SAAO;IAaZ;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,MAAM;IAE5C;;OAEG;IACG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;OAEG;cACa,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7C;;OAEG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,UAAQ,GAAG,IAAI;IAcjF;;OAEG;IACH,QAAQ,IAAI,MAAM;CAQnB"}
@@ -0,0 +1,71 @@
1
+ import { Packet } from '../types.js';
2
+ import { NetworkInterface } from '../NetworkInterface.js';
3
+ import { NetworkStack } from '../NetworkStack.js';
4
+ /**
5
+ * VETH Pair - Virtual Ethernet Device Pair
6
+ *
7
+ * Creates two virtual network interfaces that are directly connected.
8
+ * Packets sent to one end appear immediately on the other end.
9
+ * Like a virtual Ethernet cable connecting two namespaces.
10
+ *
11
+ * Example:
12
+ * ip link add veth0 type veth peer name veth1
13
+ * ip link set veth1 netns container1
14
+ */
15
+ export declare class VETHPair {
16
+ id: string;
17
+ veth0: NetworkInterface;
18
+ veth1: NetworkInterface;
19
+ state: 'up' | 'down';
20
+ private networkStack;
21
+ private queue0;
22
+ private queue1;
23
+ private waiters0;
24
+ private waiters1;
25
+ constructor(id: string, name0: string, name1: string, networkStack: NetworkStack, namespace0?: string, namespace1?: string);
26
+ /**
27
+ * Bring both interfaces up
28
+ */
29
+ up(): Promise<void>;
30
+ /**
31
+ * Bring both interfaces down
32
+ */
33
+ down(): Promise<void>;
34
+ /**
35
+ * Send packet from veth0 to veth1
36
+ */
37
+ send0to1(packet: Packet): Promise<void>;
38
+ /**
39
+ * Send packet from veth1 to veth0
40
+ */
41
+ send1to0(packet: Packet): Promise<void>;
42
+ /**
43
+ * Receive packet on veth0 (sent from veth1)
44
+ */
45
+ recv0(): Promise<Packet>;
46
+ /**
47
+ * Receive packet on veth1 (sent from veth0)
48
+ */
49
+ recv1(): Promise<Packet>;
50
+ /**
51
+ * Move one end of the VETH pair to a different namespace
52
+ */
53
+ moveToNamespace(which: 0 | 1, namespace: string): Promise<void>;
54
+ /**
55
+ * Generate MAC address for VETH interface
56
+ */
57
+ private generateMAC;
58
+ /**
59
+ * Get VETH pair status string
60
+ */
61
+ toString(): string;
62
+ /**
63
+ * Get interface by name
64
+ */
65
+ getInterface(name: string): NetworkInterface | null;
66
+ /**
67
+ * Get peer interface
68
+ */
69
+ getPeer(name: string): NetworkInterface | null;
70
+ }
71
+ //# sourceMappingURL=VETHPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VETHPair.d.ts","sourceRoot":"","sources":["../../../../src/kernel/network/tunnel/VETHPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,IAAI,GAAG,MAAM,CAAU;IAE9B,OAAO,CAAC,YAAY,CAAe;IAGnC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,QAAQ,CAAuC;gBAGrD,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,EAC1B,UAAU,SAAY,EACtB,UAAU,SAAY;IAcxB;;OAEG;IACG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAUzB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7C;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAc9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAc9B;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrE;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAUlB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAMnD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;CAK/C"}