This repository has been archived by the owner on Apr 27, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
HandleSmPolicyNotify.go
74 lines (69 loc) · 3.71 KB
/
HandleSmPolicyNotify.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package pcf_producer
import (
// "context"
// "fmt"
"free5gc/lib/openapi/models"
// "free5gc/src/pcf/pcf_context"
"free5gc/src/pcf/pcf_handler/pcf_message"
// "free5gc/src/pcf/pcf_util"
// "github.com/gin-gonic/gin"
)
func HandleSmPolicyNotify(httpChannel chan pcf_message.HttpResponseMessage, supi string, body models.PolicyDataChangeNotification) {
// policyDataChangeNotification := body
// var problem models.ProblemDetails
// var smPolicyDecision models.SmPolicyDecision
// pcfUeContext := pcf_context.PCF_Self().UePool
// counter := false
// client := pcf_util.GetNudrClient("https://localhost:29504")
// UeContext := pcf_context.PCF_Self().UePool
// if UeContext[supi] == nil {
// problem.Status = 404
// problem.Cause = "CONTEXT_NOT_FOUND"
// pcf_message.SendHttpResponseMessage(httpChannel, nil, 404, problem)
// }
// _, resp, err := client.DefaultApi.PolicyDataUesUeIdSmDataGet(context.Background(), supi, nil)
// if err != nil {
// problem.Status = 404
// problem.Cause = "CONTEXT_NOT_FOUND"
// pcf_message.SendHttpResponseMessage(httpChannel, nil, 404, problem)
// }
// if resp.StatusCode == 204 {
// UeContext[supi].SmPolicyControlStore = nil
// // pcf_producer_callback.CreateSmPolicyNotifyContext(fmt.Sprint(UeContext[supi].SmPolicyControlStore.Context.PduSessionId), "terminate", nil)
// pcf_message.SendHttpResponseMessage(httpChannel, nil, 204, nil)
// }
// if resp.StatusCode == 200 {
// for key := range pcfUeContext {
// SupiTemp := fmt.Sprint(pcfUeContext[key].Supi)
// if supi == SupiTemp {
// snssai := fmt.Sprint(pcfUeContext[key].SmPolicyControlStore.Context.SliceInfo.Sst) + pcfUeContext[key].SmPolicyControlStore.Context.SliceInfo.Sd
// dnn := pcfUeContext[key].SmPolicyControlStore.Context.Dnn
// if policyDataChangeNotification.SmPolicyData.SmPolicySnssaiData[snssai].SmPolicyDnnData[dnn].Ipv4Index != 0 {
// smPolicyDecision.Ipv4Index = policyDataChangeNotification.SmPolicyData.SmPolicySnssaiData[snssai].SmPolicyDnnData[dnn].Ipv4Index
// pcfUeContext[key].SmPolicyControlStore.Policy.Ipv4Index = smPolicyDecision.Ipv4Index
// counter = true
// }
// if policyDataChangeNotification.SmPolicyData.SmPolicySnssaiData[snssai].SmPolicyDnnData[dnn].Ipv6Index != 0 {
// smPolicyDecision.Ipv6Index = policyDataChangeNotification.SmPolicyData.SmPolicySnssaiData[snssai].SmPolicyDnnData[dnn].Ipv6Index
// pcfUeContext[key].SmPolicyControlStore.Policy.Ipv6Index = smPolicyDecision.Ipv6Index
// counter = true
// }
// if pcfUeContext[key].SmPolicyControlStore.Policy.Online != policyDataChangeNotification.SmPolicyData.SmPolicySnssaiData[snssai].SmPolicyDnnData[dnn].Online {
// smPolicyDecision.Online = policyDataChangeNotification.SmPolicyData.SmPolicySnssaiData[snssai].SmPolicyDnnData[dnn].Online
// pcfUeContext[key].SmPolicyControlStore.Policy.Online = smPolicyDecision.Online
// counter = true
// }
// if pcfUeContext[key].SmPolicyControlStore.Policy.Offline != policyDataChangeNotification.SmPolicyData.SmPolicySnssaiData[snssai].SmPolicyDnnData[dnn].Offline {
// smPolicyDecision.Offline = policyDataChangeNotification.SmPolicyData.SmPolicySnssaiData[snssai].SmPolicyDnnData[dnn].Offline
// pcfUeContext[key].SmPolicyControlStore.Policy.Offline = smPolicyDecision.Offline
// counter = true
// }
// pcf_message.SendHttpResponseMessage(httpChannel, nil, 204, gin.H{})
// if counter {
// // pcf_producer_callback.CreateSmPolicyNotifyContext(fmt.Sprint(UeContext[supi].SmPolicyControlStore.Context.PduSessionId), "update", &smPolicyDecision)
// pcf_message.SendHttpResponseMessage(httpChannel, nil, 204, nil)
// }
// }
// }
// }
}