--- /dev/null
+#ifndef _FWP_ENDPOINT_H
+#define _FWP_ENDPOINT_H
+
+struct fwp_endpoint{
+ node;
+ port;
+ int sockd;
+ struct sockaddr addr;
+
+}
+
+
+#endif /*_FWP_ENDPOINT_H */
int fwp_send(unsigned int vres_id, void *buffer, size_t size, int flags,
struct sockaddr *to, socklen_t tolen);
-int fwp_contract_negotiate (struct fwp_contract *contract);
+int fwp_contract_negotiate (struct fwp_contract *contract, int *vres_id);
int fwp_contract_cancel(unsigned int vres_id);
--- /dev/null
+
+struct fwp_endpoint* fwp_endpoint_create(int pf, struct sockaddr *_addr, socklen_t _addrlen)
+{
+ struct fwp_socket* fwpsock;
+ unsigned char *addr;
+
+
+
+
+ fwpsock = (struct fwp_socket*) malloc(sizeof(struct fwp_socket) +
+ _addrlen);
+ if (!fwpsock)
+ return NULL;
+
+ addr = (unsigned char*) fwpsock + sizeof(struct fwp_socket);
+ memcpy(addr, (void*) _addr, _addrlen);
+
+ fwpsock->addr = (struct sockaddr*) addr;
+ fwpsock->addrlen = _addrlen;
+
+ return fwpsock;
+}
+
+inline void fwp_socket_set(struct fwp_socket *fwpsock, struct sockaddr *_addr,
+ socklen_t _addrlen)
+{
+ fwpsock->addr = _addr;
+ fwpsock->addrlen = _addrlen;
+}
+
+void fwp_socket_free(struct fwp_socket *fwpsock)
+{
+ free((void*)fwpsock);
+ fwpsock = NULL;
+}
msgb->tail = msgb->data;
}
+
+/* reserve is called first then push */
+/*void fwp_msgb_reserve(struct msgb* msgb, unsigned int len)
+{
+ msgb->data+=len;
+ msgb->tail+=len;
+}*/
+
struct fwp_socket* fwp_socket_create(struct sockaddr *_addr, socklen_t _addrlen)
{
struct fwp_socket* fwpsock;
unsigned char *addr;
-
+
fwpsock = (struct fwp_socket*) malloc(sizeof(struct fwp_socket) +
_addrlen);
if (!fwpsock)
free((void*)fwpsock);
fwpsock = NULL;
}
-
-/* reserve is called first then push */
-/*void fwp_msgb_reserve(struct msgb* msgb, unsigned int len)
-{
- msgb->data+=len;
- msgb->tail+=len;
-}*/
return 0;
}
+/**
+ *Incomplete
+ */
int fwp_contract_cancel(unsigned int vres_id)
{
return fwp_vres_close(vres_id);
int main()
{
- int i,rc;
+ int i,rc, vres_id;
struct fwp_contract cnt1;
struct fwp_contract cnt2;
printf("Start\n");
fwp_init();
- rc = fwp_contract_negotiate(&cnt1);
+ rc = fwp_contract_negotiate(&cnt1, &vres_id);
if (cnt1.status == FWP_CNT_NEGOTIATED) {
printf("Contract 1 negotiated\n");
} else
printf("Contract 1 rejected.\n");
- rc = fwp_contract_negotiate(&cnt2);
+ rc = fwp_contract_negotiate(&cnt2, &vres_id);
if (cnt2.status == FWP_CNT_NEGOTIATED) {
printf("Contract 2 negotiated\n");
} else
printf("Contract 2 rejected.\n");
- rc = fwp_contract_negotiate(&cnt1);
+ rc = fwp_contract_negotiate(&cnt1, &vres_id);
if (cnt1.status == FWP_CNT_NEGOTIATED) {
printf("Contract 3 negotiated\n");
} else